#include <buf_net_base.h>
Inheritance diagram for NLNET::CBufNetBase:
Base class for CBufClient and CBufServer. The max block sizes for sending and receiving are controlled by setMaxSentBlockSize() and setMaxExpectedBlockSize(). Their default value is the maximum number contained in a sint32, that is 2^31-1 (i.e. 0x7FFFFFFF). The limit for sending is checked only in debug mode.
Definition at line 74 of file buf_net_base.h.
Public Types | |
enum | TEventType { User = 'U', Connection = 'C', Disconnection = 'D' } |
Type of incoming events (max 256). More... | |
Public Member Functions | |
void | displayReceiveQueueStat (NLMISC::CLog *log=NLMISC::InfoLog) |
uint32 | getReceiveQueueSize () |
Returns the size of the receive queue (mutexed). | |
uint32 | maxExpectedBlockSize () const |
Returns the max size of the received messages (default: 2^31-1). | |
uint32 | maxSentBlockSize () const |
Returns the max size of the sent messages (default: 2^31-1). | |
void | setDisconnectionCallback (TNetCallback cb, void *arg) |
Sets callback for detecting a disconnection (or NULL to disable callback). | |
void | setMaxExpectedBlockSize (sint32 limit) |
void | setMaxSentBlockSize (sint32 limit) |
virtual | ~CBufNetBase () |
Destructor. | |
Protected Member Functions | |
void * | argOfDisconnectionCallback () const |
Returns the argument of the disconnection callback. | |
CBufNetBase () | |
Constructor. | |
volatile bool | dataAvailableFlag () const |
Return _DataAvailable. | |
TNetCallback | disconnectionCallback () const |
Returns the disconnection callback. | |
void | pushMessageIntoReceiveQueue (const uint8 *buffer, uint32 size) |
void | pushMessageIntoReceiveQueue (const std::vector< uint8 > &buffer) |
Push message into receive queue (mutexed). | |
CSynchronizedFIFO & | receiveQueue () |
Access to the receive queue. | |
void | setDataAvailableFlag (bool da) |
Sets _DataAvailable. | |
Private Attributes | |
volatile bool | _DataAvailable |
True if there is data available (avoids locking a mutex). | |
TNetCallback | _DisconnectionCallback |
Callback for disconnection. | |
void * | _DisconnectionCbArg |
Argument of the disconnection callback. | |
uint32 | _MaxExpectedBlockSize |
Max size of received messages (limited by the user). | |
uint32 | _MaxSentBlockSize |
Max size of sent messages (limited by the user). | |
CSynchronizedFIFO | _RecvFifo |
The receive queue, protected by a mutex-like device. | |
Friends | |
class | NLNET::CBufSock |
|
Type of incoming events (max 256).
Definition at line 79 of file buf_net_base.h.
00079 { User = 'U', Connection = 'C', Disconnection = 'D' }; |
|
Destructor.
Definition at line 82 of file buf_net_base.h.
00082 {}; |
|
Constructor.
Definition at line 46 of file buf_net_base.cpp.
00046 : 00047 _RecvFifo("CBufNetBase::_RecvFifo"), 00048 _DataAvailable( false ), 00049 _DisconnectionCallback( NULL ), 00050 _DisconnectionCbArg( NULL ), 00051 _MaxExpectedBlockSize( 10485760 ), // 10M 00052 _MaxSentBlockSize( 10485760 ) 00053 { 00054 // Debug info for mutexes 00055 #ifdef MUTEX_DEBUG 00056 initAcquireTimeMap(); 00057 #endif 00058 } |
|
Returns the argument of the disconnection callback.
Definition at line 160 of file buf_net_base.h. References _DisconnectionCbArg. Referenced by NLNET::CBufServer::dataAvailable(), and NLNET::CBufClient::dataAvailable().
00160 { return _DisconnectionCbArg; } |
|
Return _DataAvailable.
Definition at line 206 of file buf_net_base.h. References _DataAvailable. Referenced by NLNET::CBufServer::dataAvailable(), and NLNET::CBufClient::dataAvailable().
00206 { return _DataAvailable; } |
|
Returns the disconnection callback.
Definition at line 157 of file buf_net_base.h. References _DisconnectionCallback, and NLNET::TNetCallback. Referenced by NLNET::CBufServer::dataAvailable(), and NLNET::CBufClient::dataAvailable().
00157 { return _DisconnectionCallback; } |
|
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 94 of file buf_net_base.h. References _RecvFifo, and NLNET::CFifoAccessor.
00095 { 00096 CFifoAccessor syncfifo( &_RecvFifo ); 00097 syncfifo.value().displayStats(log); 00098 } |
|
Returns the size of the receive queue (mutexed).
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 88 of file buf_net_base.h. References _RecvFifo, NLNET::CFifoAccessor, and uint32.
00089 { 00090 CFifoAccessor syncfifo( &_RecvFifo ); 00091 return syncfifo.value().size(); 00092 } |
|
Returns the max size of the received messages (default: 2^31-1).
Definition at line 135 of file buf_net_base.h. References _MaxExpectedBlockSize, and uint32. Referenced by NLNET::CBufClient::connect(), and NLNET::CBufServer::init().
00136 { 00137 return _MaxExpectedBlockSize; 00138 } |
|
Returns the max size of the sent messages (default: 2^31-1).
Definition at line 141 of file buf_net_base.h. References _MaxSentBlockSize, and uint32. Referenced by NLNET::CBufServer::send(), and NLNET::CBufClient::send().
00142 { 00143 return _MaxSentBlockSize; 00144 } |
|
Definition at line 183 of file buf_net_base.h. References _RecvFifo, buffer, NLNET::CFifoAccessor, setDataAvailableFlag(), size, uint32, and uint8.
00184 { 00185 //sint32 mbsize; 00186 { 00187 //nldebug( "BNB: Acquiring the receive queue... "); 00188 CFifoAccessor recvfifo( &_RecvFifo ); 00189 //nldebug( "BNB: Acquired, pushing the received buffer... "); 00190 recvfifo.value().push( buffer, size ); 00191 //nldebug( "BNB: Pushed, releasing the receive queue..." ); 00192 //mbsize = recvfifo.value().size() / 1048576; 00193 setDataAvailableFlag( true ); 00194 } 00195 //nldebug( "BNB: Released." ); 00196 /*if ( mbsize > 1 ) 00197 { 00198 nlwarning( "The receive queue size exceeds %d MB", mbsize ); 00199 }*/ 00200 } |
|
Push message into receive queue (mutexed).
Definition at line 164 of file buf_net_base.h. References _RecvFifo, buffer, NLNET::CFifoAccessor, and setDataAvailableFlag(). Referenced by NLNET::CBufSock::advertiseSystemEvent(), and NLNET::CClientReceiveTask::run().
00165 { 00166 //sint32 mbsize; 00167 { 00168 //nldebug( "BNB: Acquiring the receive queue... "); 00169 CFifoAccessor recvfifo( &_RecvFifo ); 00170 //nldebug( "BNB: Acquired, pushing the received buffer... "); 00171 recvfifo.value().push( buffer ); 00172 //nldebug( "BNB: Pushed, releasing the receive queue..." ); 00173 //mbsize = recvfifo.value().size() / 1048576; 00174 setDataAvailableFlag( true ); 00175 } 00176 //nldebug( "BNB: Released." ); 00177 //if ( mbsize > 1 ) 00178 //{ 00179 // nlwarning( "The receive queue size exceeds %d MB", mbsize ); 00180 //} 00181 } |
|
Access to the receive queue.
Definition at line 154 of file buf_net_base.h. References _RecvFifo, and NLNET::CSynchronizedFIFO. Referenced by NLNET::CBufServer::dataAvailable(), NLNET::CBufClient::dataAvailable(), NLNET::CBufClient::disconnect(), NLNET::CBufServer::receive(), NLNET::CBufClient::receive(), and NLNET::CServerReceiveTask::run().
00154 { return _RecvFifo; } |
|
Sets _DataAvailable.
Definition at line 203 of file buf_net_base.h. References _DataAvailable. Referenced by NLNET::CBufServer::dataAvailable(), NLNET::CBufClient::dataAvailable(), NLNET::CBufClient::disconnect(), pushMessageIntoReceiveQueue(), NLNET::CBufServer::receive(), NLNET::CBufClient::receive(), and NLNET::CServerReceiveTask::run().
00203 { _DataAvailable = da; } |
|
Sets callback for detecting a disconnection (or NULL to disable callback).
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 85 of file buf_net_base.h. References _DisconnectionCallback, _DisconnectionCbArg, and NLNET::TNetCallback.
00085 { _DisconnectionCallback = cb; _DisconnectionCbArg = arg; } |
|
Sets the max size of the received messages. If receiving a message bigger than the limit, the connection will be dropped. Default value: 1 MegaByte If you put a negative number as limit, the max size is reset to the default value. Warning: you can call this method only at initialization time, before connecting (for a client) or calling init() (for a server) ! Definition at line 109 of file buf_net_base.h. References _MaxExpectedBlockSize, sint32, and uint32.
00110 { 00111 if ( limit < 0 ) 00112 _MaxExpectedBlockSize = 1048576; 00113 else 00114 _MaxExpectedBlockSize = (uint32)limit; 00115 } |
|
Sets the max size of the sent messages. Note: Limiting of sending not implemented, currently Default value: 1 MegaByte If you put a negative number as limit, the max size is reset to the default value. Warning: you can call this method only at initialization time, before connecting (for a client) or calling init() (for a server) ! Definition at line 126 of file buf_net_base.h. References _MaxSentBlockSize, sint32, and uint32.
00127 { 00128 if ( limit < 0 ) 00129 _MaxSentBlockSize = 1048576; 00130 else 00131 _MaxSentBlockSize = (uint32)limit; 00132 } |
|
Definition at line 148 of file buf_net_base.h. |
|
True if there is data available (avoids locking a mutex).
Definition at line 214 of file buf_net_base.h. Referenced by dataAvailableFlag(), and setDataAvailableFlag(). |
|
Callback for disconnection.
Definition at line 217 of file buf_net_base.h. Referenced by disconnectionCallback(), and setDisconnectionCallback(). |
|
Argument of the disconnection callback.
Definition at line 220 of file buf_net_base.h. Referenced by argOfDisconnectionCallback(), and setDisconnectionCallback(). |
|
Max size of received messages (limited by the user).
Definition at line 223 of file buf_net_base.h. Referenced by maxExpectedBlockSize(), and setMaxExpectedBlockSize(). |
|
Max size of sent messages (limited by the user).
Definition at line 226 of file buf_net_base.h. Referenced by maxSentBlockSize(), and setMaxSentBlockSize(). |
|
The receive queue, protected by a mutex-like device.
Definition at line 211 of file buf_net_base.h. Referenced by displayReceiveQueueStat(), getReceiveQueueSize(), pushMessageIntoReceiveQueue(), and receiveQueue(). |