SyncEventQueue Class Reference

A simple FIFO queue for events. More...

#include <Syncmsg.h>

Inheritance diagram for SyncEventQueue:

Public Member Functions

void Insert (Event::AsyncEvent *event)
 Insert in queue.
 
virtual void extract ()
 Subordinate extract mechanism.
 
Event::AsyncEvent * First ()
 Remove first element of queue.
 

Detailed Description

A simple FIFO queue for events.

Definition at line 91 of file Syncmsg.h.

Constructor & Destructor Documentation

◆ SyncEventQueue()

SyncEventQueue::SyncEventQueue ( )
inline

Definition at line 102 of file Syncmsg.h.

102 {
103 _next = _prev = this;
104 _freelist = &_free;
105 _free = 0;
106 }

◆ ~SyncEventQueue()

SyncEventQueue::~SyncEventQueue ( )
inline

Definition at line 108 of file Syncmsg.h.

108 {
109 // Only delete items if root element
110 if ( _freelist == &_free ) {
111 SyncEventQueue *q1 = _free;
112 while ( q1 ) {
113 SyncEventQueue *q2 = q1;
114 q1 = q1->_free;
115 delete q2;
116 }
117 }
118 }
A simple FIFO queue for events.
Definition Syncmsg.h:91

Member Function Documentation

◆ Insert()

void SyncEventQueue::Insert ( Event::AsyncEvent *  event)
inline

Insert in queue.

Definition at line 121 of file Syncmsg.h.

121 {
122 SyncEventQueue *newq = _free;
123
124 if ( newq ) {
125 _free = newq->_free;
126 newq->Set (event);
127 } else {
128 newq = new SyncEventQueue (event);
129 newq->_freelist = _freelist;
130 }
131
132 _prev->_next = newq;
133 newq->_prev = _prev;
134 newq->_next = this;
135 _prev = newq;
136 }

Referenced by Syncmsgobj< C >::msgDeliver(), and Syncmsgobj< C >::Queue().

◆ extract()

virtual void SyncEventQueue::extract ( )
inlinevirtual

Subordinate extract mechanism.

Definition at line 139 of file Syncmsg.h.

139 {
140 _prev->_next = _next;
141 _next->_prev = _prev;
142 _free = *_freelist;
143 *_freelist = this;
144 }

◆ First()

Event::AsyncEvent * SyncEventQueue::First ( )
inline

Remove first element of queue.

Definition at line 147 of file Syncmsg.h.

147 {
148 if ( _next == this )
149 return 0;
150
151 return _next->Extract();
152 }

Referenced by Syncmsgobj< C >::msgDeliver(), and Syncmsgobj< C >::Process().


The documentation for this class was generated from the following file:

All rights reserved © 2002 - 2024 Isode Ltd.