6 #ifndef smFixedMessageQueue_H_
7 #define smFixedMessageQueue_H_
15 #include <vlutil/vlShmPool.h>
16 #include <vlutil/vlNetTypes.h>
60 virtual bool isEmpty();
63 virtual bool isSubscribed(DtU8 subscriberId)
const;
67 virtual DtU32 subscriberDrops(DtU8 subscriberId)
const;
73 virtual void sendMessage(
const void *message,
unsigned int size);
79 virtual void* message(
unsigned int *outSize = 0);
88 virtual void unsubscribe(DtU8
id);
96 void subscribe(DtU8
id);
102 virtual void resetQueue(DtU32 numberOfBuckets, DtU32 payloadSize);
108 virtual void initLocks();
111 virtual void clearLocks();
114 virtual std::ostream &printDataToStream(std::ostream &str)
const;
125 static unsigned int poolSize(DtU32 numberOfBuckets, DtU32 payloadSize);
135 DtU32 numberOfBuckets()
const;
138 DtU32 payloadSize()
const;
142 virtual char* payloadInBucket(
unsigned int bucketNum)
const;
145 virtual DtBucketHeader* bucketHeader(
unsigned int bucketNum)
const;
148 static const unsigned int theMaxSubscribers = 255;
153 virtual void lockForRead();
155 virtual void unlockForRead();
158 virtual void lockForWrite();
161 virtual void unlockForWrite();
190 DtNetU32 front[theMaxSubscribers];
191 DtNetU32 subscribed[theMaxSubscribers];
192 DtNetU32 subscriberDrops[theMaxSubscribers];
205 #endif //end smFixedMessageQueue_H_