# DSDataBuf

Data buffer structure.

### Synopsis

    struct DSDataBuf {
       struct DSDataBuf* permanentNext;
       struct DSDataBuf* next;
       long useCount;
       struct DSStreamCB* streamCBPtr;
       Item ioreqItem;
       IOReq* ioreqItemPtr;
       char streamData[4];
     typedef struct DSDataBuf DSDataBuf, *DSDataBufPtr

### Description

The data buffer structure managed by the stream parser. The first part of each physical data buffer must contain the header information described by this structure. The actual data component of a `DSDataBuf` can be a different length for each stream. However, buffer sizes are fixed within a given stream.

### Fields

`permanentNext`
  Pointer for keeping permanent global buffer list for debugging, etc. (not used by streamer).

`next`
  Pointer for linking buffers into lists (free, in use, etc.).

`useCount`
  Count of subscribers using this buffer.

`streamCBPtr`
  Pointer to the context block of the owning stream.

Note: The following two fields are filled in by data acquisition at "opening" time.

`ioreqItem`
  I/O request item for queuing reads for this buffer

`oreqItemPtr`
  Pointer to the item in system space

`streamData`
  Start of (variable length) stream data

### Associated Files

DataStream.h