18 #ifndef __eqbase_h_included 19 #define __eqbase_h_included 76 m_msgType = a.m_msgType;
87 virtual Void
serialize(pVoid pBuffer, ULong &nOffset);
92 virtual Void
unserialize(pVoid pBuffer, ULong &nOffset);
154 virtual Bool isPublic() = 0;
155 virtual ULong &msgSize() = 0;
156 virtual Int &msgCnt() = 0;
157 virtual Long &msgHead() = 0;
158 virtual Long &msgTail() = 0;
159 virtual Bool &multipleReaders() = 0;
160 virtual Bool &multipleWriters() = 0;
161 virtual Int &numReaders() = 0;
162 virtual Int &numWriters() = 0;
163 virtual Int &refCnt() = 0;
164 virtual pChar data() = 0;
165 virtual Void allocDataSpace(cpStr sFile, Char cId, Int nSize) = 0;
166 virtual Void initReadMutex() = 0;
167 virtual Void initWriteMutex() = 0;
168 virtual Void initSemFree(UInt initialCount) = 0;
169 virtual Void initSemMsgs(UInt initialCount) = 0;
178 Mode mode() {
return m_mode; }
183 Void
init(ULong nMsgSize, Int nMsgCnt, Int queueId, Bool bMultipleReaders,
190 Char m_rBuffer[USHRT_MAX];
191 Char m_wBuffer[USHRT_MAX];
200 friend class PointerQueue;
202 virtual PointerMessage &
operator=(
const PointerMessage &msg) { tmr_=msg.tmr_; ptr_=msg.ptr_;
return *
this; }
203 epctime_t queueMicroSeconds() {
return tmr_.MicroSeconds(); }
204 epctime_t queueMilliSeconds() {
return tmr_.MilliSeconds(); }
205 pVoid pointer() {
return ptr_; }
206 PointerMessage &pointer(pVoid p) { ptr_=p;
return *
this; }
207 Void start() { tmr_.Start(); }
208 Void stop() { tmr_.Stop(); }
220 size_t maxPages()
const {
return mp_; }
221 size_t messageSize()
const {
return ms_; }
222 UShort pageSize()
const {
return ps_; }
224 PointerQueue &init(
size_t ms, UShort ps,
size_t mp_);
226 Bool push(pVoid ptr, Bool wait=
True);
227 pVoid pop(Bool wait=
True);
240 PageAddress() : pg_(nullptr), ofs_(0) {}
241 PageAddress(Page &page, UShort offset) : pg_(&page), ofs_(offset) {}
242 PageAddress(
const PageAddress &addr) : pg_(addr.pg_), ofs_(addr.ofs_) {}
244 PageAddress &
operator=(
const PageAddress &addr) { pg_=addr.pg_; ofs_=addr.ofs_;
return *
this; }
245 Bool operator==(
const PageAddress &addr) {
return pg_==addr.pg_ && ofs_==addr.ofs_; }
247 Page &page() {
return *pg_; }
248 PageAddress &page(Page &p) { pg_=&p;
return *
this; }
249 PageAddress &page(Page *p) { pg_=p;
return *
this; }
250 UShort offset()
const {
return ofs_; }
251 PageAddress &offset(UShort ofs) { ofs_=ofs;
return *
this; }
253 Page &nextPage() {
return *pg_->nextPage; }
254 Page &prevPage() {
return *pg_->prevPage; }
281 #endif // #define __eqbase_h_included Void setMsgType(Long msgType)
Assigns the message type value.
Definition: eqbase.h:103
Void destroy()
Destroys the message queue.
Definition: eqbase.cpp:121
provivdes read only access
Definition: eqbase.h:130
#define True
True.
Definition: ebase.h:25
Macros for various standard C library functions and standard includes.
Classes used to encode and decode messages sent to and recieved from a message queue.
~EQueueMessage()
Class destructor.
Definition: eqbase.h:66
virtual Void unserialize(pVoid pBuffer, ULong &nOffset)
Deserializes the message.
Definition: eqbase.cpp:36
Allows read or write access.
Void init(Int nMsgSize, Int nMsgCnt, Int queueId, Bool bMultipleReaders, Bool bMultipleWriters, EQueueBase::Mode eMode)
Initializes the private message queue.
Definition: eqpriv.h:42
Implements a stopwatch style timer.
Definition: etimer.h:26
Contains the data associated with a public or private mutex.
Definition: esynch.h:72
Provides class for manipulating time of day values.
Contains the data associated with a public or private semaphore.
Definition: esynch.h:268
virtual Void getLength(ULong &length)
Calculates the length of the message.
Definition: eqbase.cpp:24
EQueueMessage & operator=(const EQueueMessage &a)
Assignment operator.
Definition: eqbase.h:73
Bool push(EQueueMessage &msg, Bool wait=True)
Writes a message to the queue.
Definition: eqbase.cpp:154
EQueueMessage * pop(Bool wait=True)
Retrieves the next message from the queue.
Definition: eqbase.cpp:224
friend class EQueueBase
Definition: eqbase.h:57
Class for manipulating date and time of day values.
Definition: etime.h:199
Defines base class for exceptions and declaration helper macros.
The private queue class.
Definition: eqpriv.h:27
virtual Void serialize(pVoid pBuffer, ULong &nOffset)
Serializes the message.
Definition: eqbase.cpp:30
ETime & getTimer()
Retrieves the message lifetime timer.
Definition: eqbase.h:96
provides write only access
Definition: eqbase.h:132
The message queue base class.
Definition: eqbase.h:120
#define DECLARE_ERROR(__e__)
Declares exception class derived from EError with no constructor parameters.
Definition: eerror.h:53
Long getMsgType()
Retrieves the message type value.
Definition: eqbase.h:106
Represents a private semaphore, the semaphore data is allocated from either the stack or heap...
Definition: esynch.h:382
Mode
The queue access modes.
Definition: eqbase.h:127
EQueueMessage()
Default constructor.
Definition: eqbase.h:61
A private mutex (the mutex data is allocated from either the heap or stack).
Definition: esynch.h:175
The message queue base message class.
Definition: emsg.h:29
Contains definitions for synchronization objects.
long long int epctime_t
time typedef
Definition: ebase.h:34
Represents a message to be written to/read from a message queue.
Definition: eqbase.h:55