typedef struct Queue Queue; #pragma incomplete Queue /* queue state bits, Qmsg, Qcoalesce, and Qkick can be set in qopen */ enum { /* Queue.state */ Qstarve = (1<<0), /* consumer starved */ Qmsg = (1<<1), /* message stream */ Qclosed = (1<<2), /* queue has been closed/hungup */ Qflow = (1<<3), /* producer flow controlled */ Qcoalesce = (1<<4), /* coallesce packets on read */ Qkick = (1<<5), /* always call the kick routine after qwrite */ }; void qclose(Queue*); int qerror(Queue*, char *err, int nerr); void qfree(Queue*); void qhangup(Queue *q, char *msg); Queue* qopen(int, int, void (*)(void*), void*); void qnoblock(Queue*, int onoff); long qread(Queue*, void*, int); void qreopen(Queue*); int qwrite(Queue*, void*, int);