# DSStreamCB

Stream context block structure.

### Synopsis

    typedef struct DSStreamCB {
       Item creatorTask;
       uint32 creatorSignal;
       int32 creatorStatus;
       Item threadItem;
       void* threadStackBlock;
       Item acquirePort;
       long bufDataSize;
       DSDataBufPtr freeBufHead;
       unsigned long streamFlags;
       uint32 clockOffset;
       uint32 lastValidClock;
       uint32 branchDest;
       Item requestPort;
       uint32 requestPortSignal;
       Item acqReplyPort;
       uint32 acqReplyPortSignal;
       MemPoolPtr dataMsgPool;
       Item subsReplyPort;
       uint32 subsReplyPortSignal;
       MemPoolPtr subsMsgPool;
       DSDataBufPtr filledBufHead;
       DSDataBufPtr filledBufTail;
       long totalBufferCount;
       long currentFreeBufferCount;
       DSRequestMsgPtr endOfStreamMsg;
       int32 repliesPending;
       DSRequestMsgPtr requestMsgHead;
       DSRequestMsgPtr requestMsgTail;
       long numSubscribers;
       DSSubscriber subscriber[DS_MAX_SUBSCRIBERS];
    } DSStreamCB,  *DSStreamCBPtr

### Description

This data structure contains all the contexts necessary to drive a stream, including a description of all subscribers and the information necessary to manage all memory buffers. One of these data structures exists for each open stream.

### Fields

`creatorTask`
  Task to signal when initialization complete.

`creatorSignal`
  Signal to send for synchronous completion.

`creatorStatus`
  Result code for creator.

`threadItem`
  Thread Item for the server process.

`threadStackBlock`
  Pointer to thread's stack memory block.

`acquirePort`
  Acquisition module message port.

`bufDataSize`
  Size of data buffers in BYTES.

`freeBufHead`
  Pointer to list of free data buffers.

`streamFlags`
  Stream state flags.

`clockOffset`
  Offset to get relative stream clock.

`lastValidClock`
  Set when stream stopped.

`branchDest`
  Marker to branching to `STRM_GO_INPROGRESS` true.

`requestPort`
  Work request message port.

`requestPortSignal`
  Signal for request port.

`acqReplyPort`
  Reply port for data acquisition communications.

`acqReplyPortSignal`
  Signal for data acquisition reply port.

`dataMsgPool`
  Pool of data message blocks.

`subsReplyPort`
  Reply port for subscriber communication.

`subsReplyPortSignal`
  Signal for subscriber reply port.

`subsMsgPool`
  Pool of subscriber message blocks.

`filledBufHead`
  Pointer to list of filled data buffers.

`filledBufTail`
  Pointer to end of list of filled data buffers.

`repliesPending`
  Number of replies needed before replying to request.

`requestMsgHead`
  Pointer to first request message in queue.

`requestMsgTail`
  Pointer to last request message in queue.

`numSubscribers`
  Number of subscribers.

### Associated Files

DataStream.h