Annotation of 42BSD/ingres/source/libq/IIpb_read.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      "IIglobals.h"
                      3: # include      <sccs.h>
                      4: 
                      5: SCCSID(@(#)IIpb_read.c 7.1     2/5/81)
                      6: 
                      7: 
                      8: /*
                      9: **  IIPB_READ -- read a pipe block
                     10: **
                     11: **     This routine reads a pipe block into *ppb.  It also handles
                     12: **     all the low level protocol: RESET blocks, SYNC blocks, META
                     13: **     blocks, blocks intended for another process, etc.
                     14: **
                     15: **     When this routine returns, it returns with a block intended
                     16: **     for this process, which must be a REGULAR block, a RESPONSE
                     17: **     block, or an ERROR block.
                     18: **
                     19: **     Parameters:
                     20: **             ppb -- a pointer to the area which wants the block.
                     21: **
                     22: **     Returns:
                     23: **             none
                     24: **
                     25: **     Side Effects:
                     26: **             ppb is set to the named block.
                     27: **             Virtually any amount of stuff can happen, depending
                     28: **                     on what is coming through the pipe.
                     29: **
                     30: **     Trace Flags:
                     31: **             12.4 - 12.9
                     32: */
                     33: 
                     34: 
                     35: IIpb_read(ppb)
                     36: register pb_t  *ppb;
                     37: {
                     38:        register int    type;
                     39:        register int    from;
                     40: 
                     41:        /*
                     42:        **  Top Loop.
                     43:        **      Hang waiting for a normal block.  Other blocks are
                     44:        **              handled inside the loop.
                     45:        **      We multiplex 'from' in here temporarily.
                     46:        */
                     47: 
                     48:        for (;;)
                     49:        {
                     50:                from = IIpb_rphys(ppb, IIinput);
                     51: 
                     52:                if (from != PB_IOSIZE)
                     53:                        IIsyserr("pb_read: read error (%d)", from);
                     54: 
                     55:                /* set up buffer pointers, etc. */
                     56:                ppb->pb_xptr = ppb->pb_data;
                     57:                ppb->pb_nleft = ppb->pb_nused;
                     58:                type = ppb->pb_type;
                     59:                from = ppb->pb_from;
                     60: 
                     61:                /* do sync block processing */
                     62:                if (type == PB_SYNC)
                     63:                {
                     64:                        IISyncs[from]--;
                     65:                        continue;
                     66:                }
                     67: 
                     68:                /* see if we are ignoring from this process */
                     69:                if (IISyncs[from] > 0)
                     70:                        continue;
                     71: 
                     72:                /*
                     73:                **  Block type dispatching.
                     74:                **      Regular, response, and error blocks return.
                     75:                **      Meta blocks are handled by calling other
                     76:                **              routines.
                     77:                */
                     78: 
                     79:                switch (type)
                     80:                {
                     81:                  case PB_REG:
                     82:                  case PB_RESP:
                     83:                  case PB_ERR:
                     84:                        /* handled by readinput() */
                     85:                        return;
                     86: 
                     87:                  /* insert more meta handling before this line */
                     88: 
                     89:                  default:
                     90:                        IIsyserr("pb_read: type %d", type);
                     91:                }
                     92:        }
                     93: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.