#include <callback_net_base.h>
Inheritance diagram for NLNET::CCallbackNetBase:

Nevrax France
Definition at line 75 of file callback_net_base.h.
Public Types | |
| enum | TRecordingState { Off, Record, Replay } |
Public Member Functions | |
| void | addCallbackArray (const TCallbackItem *callbackarray, NLMISC::CStringIdArray::TStringId arraysize) |
| void | authorizeOnly (const char *callbackName, TSockId hostid=InvalidSockId) |
| virtual bool | connected () const |
| This function is implemented in the client and server class. | |
| virtual bool | dataAvailable () |
| This function is implemented in the client and server class. | |
| virtual void | disconnect (TSockId hostid=InvalidSockId) |
| This function is implemented in the client and server class. | |
| void | displayAllMyAssociations () |
| virtual void | displayReceiveQueueStat (NLMISC::CLog *log=NLMISC::InfoLog)=0 |
| virtual void | displaySendQueueStat (NLMISC::CLog *log=NLMISC::InfoLog, TSockId destid=InvalidSockId)=0 |
| virtual void | displayThreadStat (NLMISC::CLog *log=NLMISC::InfoLog)=0 |
| virtual bool | flush (TSockId hostid=InvalidSockId)=0 |
| uint64 | getBytesReceived () |
| uint64 | getBytesSent () |
| virtual uint64 | getReceiveQueueSize ()=0 |
| virtual uint64 | getSendQueueSize ()=0 |
| NLMISC::CStringIdArray & | getSIDA () |
| Use this function to get the String ID Array needed when you want to create a message. | |
| virtual TSockId | getSockId (TSockId hostid=InvalidSockId)=0 |
| returns the sockid of a connection. On a server, this function returns the parameter. On a client, it returns the connection. | |
| virtual const CInetAddress & | hostAddress (TSockId hostid) |
| Returns the address of the specified host. | |
| void | ignoreAllUnknownId (bool b) |
| bool | isAServer () const |
| Returns true if this is a CCallbackServer. | |
| virtual void | send (const CMessage &buffer, TSockId hostid=InvalidSockId, bool log=true)=0 |
| void | sendAllMyAssociations (TSockId to) |
| Used by client and server class. | |
| void | setDefaultCallback (TMsgCallback defaultCallback) |
| Sets default callback for unknown message types. | |
| void | setDisconnectionCallback (TNetCallback cb, void *arg) |
| Sets callback for disconnections (or NULL to disable callback). | |
| void | setOtherSideAssociations (const char **associationarray, NLMISC::CStringIdArray::TStringId arraysize) |
| virtual void | update (sint32 timeout=0) |
| This function is implemented in the client and server class. | |
| virtual | ~CCallbackNetBase () |
Protected Member Functions | |
| void | baseUpdate (sint32 timeout=0) |
| Used by client and server class. | |
| CCallbackNetBase (TRecordingState rec=Off, const std::string &recfilename="", bool recordall=true) | |
| Constructor. | |
| void | checkThreadId () const |
| void | processOneMessage () |
| Read a message from the network and process it. | |
| virtual void | receive (CMessage &buffer, TSockId *hostid)=0 |
| On this layer, you can't call directly receive, It s the update() function that receive and call your callaback. | |
Protected Attributes | |
| uint64 | _BytesReceived |
| uint64 | _BytesSent |
| std::vector< TCallbackItem > | _CallbackArray |
| TMsgCallback | _DefaultCallback |
| bool | _FirstUpdate |
| NLMISC::CStringIdArray | _InputSIDA |
| bool | _IsAServer |
| TNetCallback | _NewDisconnectionCallback |
| Used by client and server class. | |
| NLMISC::CStringIdArray | _OutputSIDA |
| uint | _ThreadId |
Private Attributes | |
| TNetCallback | _DisconnectionCallback |
| void * | _DisconnectionCbArg |
| NLMISC::TTime | _LastMovedStringArray |
| NLMISC::TTime | _LastUpdateTime |
Friends | |
| void | cbnbMessageAskAssociations (CMessage &msgin, TSockId from, CCallbackNetBase &netbase) |
| void | cbnbMessageRecvAssociations (CMessage &msgin, TSockId from, CCallbackNetBase &netbase) |
| void | cbnbNewDisconnection (TSockId from, void *data) |
|
|
Definition at line 163 of file callback_net_base.h.
|
|
|
Definition at line 78 of file callback_net_base.h.
00078 {}
|
|
||||||||||||||||
|
Constructor.
Definition at line 148 of file callback_net_base.cpp. References _BytesReceived, _BytesSent, _NewDisconnectionCallback, _ThreadId, addCallbackArray(), NLNET::cbnbMessageAssociationArray, NLNET::cbnbNewDisconnection(), NLMISC::createDebug(), NLMISC::getThreadId(), Record, and Replay.
00148 : 00149 _FirstUpdate (true), _DisconnectionCallback(NULL), _DisconnectionCbArg(NULL) 00150 #ifdef USE_MESSAGE_RECORDER 00151 , _MR_RecordingState(rec), _MR_UpdateCounter(0) 00152 #endif 00153 { 00154 _ThreadId = getThreadId (); 00155 _NewDisconnectionCallback = cbnbNewDisconnection; 00156 00157 _BytesSent = 0; 00158 _BytesReceived = 0; 00159 00160 createDebug(); // for addNegativeFilter to work even in release and releasedebug modes 00161 00162 // add the callback needed to associate messages with id 00163 addCallbackArray (cbnbMessageAssociationArray, sizeof (cbnbMessageAssociationArray) / sizeof (cbnbMessageAssociationArray[0])); 00164 00165 #ifdef USE_MESSAGE_RECORDER 00166 switch ( _MR_RecordingState ) 00167 { 00168 case Record : 00169 _MR_Recorder.startRecord( recfilename, recordall ); 00170 break; 00171 case Replay : 00172 _MR_Recorder.startReplay( recfilename ); 00173 break; 00174 default:; 00175 // No recording 00176 } 00177 #endif 00178 } |
|
||||||||||||
|
Appends callback array with the specified array. You can add callback only *after* adding the server or the client.
Definition at line 184 of file callback_net_base.cpp. References _CallbackArray, _OutputSIDA, NLMISC::CStringIdArray::addString(), NLNET::TCallbackItem::Callback, checkThreadId(), nlassert, NLMISC::CStringIdArray::resize(), sint, NLMISC::CStringIdArray::size(), NLMISC::CStringIdArray::TStringId, and uint. Referenced by NLNET::CCallbackClient::CCallbackClient(), CCallbackNetBase(), NLNET::CPacsClient::connect(), NLNET::CNamingClient::connect(), NLNET::CLoginClient::connectToShard(), NLNET::CUnifiedNetwork::init(), NLNET::CLoginServer::init(), and NLNET::_CUniTime::installServer().
00185 {
00186 checkThreadId ();
00187
00188 // be sure that the 2 array have the same size
00189 nlassert (_CallbackArray.size () == (uint)_OutputSIDA.size ());
00190
00191 if (arraysize == 1 && callbackarray[0].Callback == NULL && string("") == callbackarray[0].Key)
00192 {
00193 // it's an empty array, ignore it
00194 return;
00195 }
00196
00197 // resize the array
00198 sint oldsize = _CallbackArray.size();
00199
00200 _CallbackArray.resize (oldsize + arraysize);
00201 _OutputSIDA.resize (oldsize + arraysize);
00202
00203 //TOO MUCH MESSAGE nldebug ("L3NB_CB: Adding %d callback to the array", arraysize);
00204
00205 for (sint i = 0; i < arraysize; i++)
00206 {
00207 CStringIdArray::TStringId ni = oldsize + i;
00208 //TOO MUCH MESSAGE nldebug ("L3NB_CB: Adding callback to message '%s', id '%d'", callbackarray[i].Key, ni);
00209 // copy callback value
00210
00211 _CallbackArray[ni] = callbackarray[i];
00212 // add the string to the string id array
00213 _OutputSIDA.addString (callbackarray[i].Key, ni);
00214
00215 }
00216 // nldebug ("LNETL3NB_CB: Added %d callback Now, there're %d callback associated with message type", arraysize, _CallbackArray.size ());
00217 }
|
|
||||||||||||
|
Sets the callback that you want the other side calls. If it didn't call this callback, it will be disconnected If cb is NULL, we authorize *all* callback. On a client, the hostid must be InvalidSockId (or ommited). On a server, you must provide a hostid. Definition at line 471 of file callback_net_base.cpp. References NLNET::CBufSock::asString(), NLNET::CBufSock::AuthorizedCallback, checkThreadId(), getSockId(), nlassert, nldebug, and NLNET::TSockId. Referenced by NLNET::cbShardValidation(), and NLNET::ClientConnection().
00472 {
00473 checkThreadId ();
00474
00475 nldebug ("LNETL3NB: authorizeOnly (%s, %s)", callbackName, hostid->asString().c_str());
00476
00477 hostid = getSockId (hostid);
00478
00479 nlassert (hostid != InvalidSockId);
00480
00481 hostid->AuthorizedCallback = (callbackName == NULL)?"":callbackName;
00482 }
|
|
|
Used by client and server class.
Definition at line 328 of file callback_net_base.cpp. References _FirstUpdate, _InputSIDA, _LastMovedStringArray, _LastUpdateTime, checkThreadId(), dataAvailable(), NLMISC::CStringIdArray::getAskedStringArray(), NLMISC::CStringIdArray::getNeedToAskedStringArray(), H_AUTO, NLMISC::CStringIdArray::moveNeedToAskToAskedStringArray(), nlassert, nldebug, NLMISC::nlSleep(), processOneMessage(), send(), NLMISC::CMemStream::serial(), sint32, size, NLMISC::CStringIdArray::TStringId, and NLMISC::TTime. Referenced by NLNET::CCallbackServer::update(), and NLNET::CCallbackClient::update().
00329 {
00330 H_AUTO(L3UpdateCallbackNetBase);
00331
00332 checkThreadId ();
00333
00334 // slow down the layer H_AUTO (CCallbackNetBase_baseUpdate);
00335
00336 nlassert( timeout >= -1 );
00337 TTime t0 = CTime::getLocalTime();
00338
00339 //
00340 // The first time, we init time counters
00341 //
00342 if (_FirstUpdate)
00343 {
00344 // nldebug("LNETL3NB: First update()");
00345 _FirstUpdate = false;
00346 _LastUpdateTime = t0;
00347 _LastMovedStringArray = t0;
00348 }
00349
00350 //
00351 // Every 1 seconds if we have new unknown association, we ask them to the other side
00352 //
00353 if (t0 - _LastUpdateTime > 1000)
00354 {
00355 // nldebug("LNETL3NB: baseUpdate()");
00356 _LastUpdateTime = t0;
00357
00358 const set<string> &sa = _InputSIDA.getNeedToAskedStringArray ();
00359 if (!sa.empty ())
00360 {
00361 CMessage msgout (_InputSIDA, "AA");
00362 //nlassert (sa.size () < 65536); // no size limit anymore
00363 CStringIdArray::TStringId size = sa.size ();
00364 nldebug ("LNETL3NB_ASSOC: I need %d string association, ask them to the other side", size);
00365 msgout.serial (size);
00366 for (set<string>::iterator it = sa.begin(); it != sa.end(); it++)
00367 {
00368 nldebug ("LNETL3NB_ASSOC: what is the id of '%s'?", (*it).c_str ());
00369 string str(*it);
00370 msgout.serial (str);
00371 }
00372 // send the message to the other side
00373 send (msgout, 0);
00374 _InputSIDA.moveNeedToAskToAskedStringArray();
00375 _LastMovedStringArray = t0;
00376 }
00377 }
00378
00379 //
00380 // Every 60 seconds if we have not answered association, we ask again to get them!
00381 //
00382 if (!_InputSIDA.getAskedStringArray().empty() && t0 - _LastMovedStringArray > 60000)
00383 {
00384 // we didn't have an answer for the association, resend them
00385 const set<string> sa = _InputSIDA.getAskedStringArray ();
00386 CMessage msgout (_InputSIDA, "AA");
00387 //nlassert (sa.size () < 65536); // no size limit anymore
00388 CStringIdArray::TStringId size = sa.size ();
00389 nldebug ("LNETL3NB_ASSOC: client didn't answer my asked association, retry! I need %d string association, ask them to the other side", size);
00390 msgout.serial (size);
00391 for (set<string>::iterator it = sa.begin(); it != sa.end(); it++)
00392 {
00393 nldebug ("LNETL3NB_ASSOC: what is the id of '%s'?", (*it).c_str ());
00394 string str(*it);
00395 msgout.serial (str);
00396 }
00397 // sends the message to the other side
00398 send (msgout, 0);
00399 _LastMovedStringArray = t0;
00400 }
00401
00402 /*
00403 * timeout -1 => read one message in the queue or nothing if no message in queue
00404 * timeout 0 => read all messages in the queue
00405 * timeout other => read all messages in the queue until timeout expired (at least all one time)
00406 */
00407
00408 bool exit = false;
00409
00410 while (!exit)
00411 {
00412 // process all messages in the queue
00413 while (dataAvailable ())
00414 {
00415 processOneMessage ();
00416 if (timeout == -1)
00417 {
00418 exit = true;
00419 break;
00420 }
00421 }
00422
00423 // need to exit?
00424 if (timeout == 0 || (sint32)(CTime::getLocalTime() - t0) > timeout)
00425 {
00426 exit = true;
00427 }
00428 else
00429 {
00430 // enable multithreading on windows :-/
00431 // slow down the layer H_AUTO (CCallbackNetBase_baseUpdate_nlSleep);
00432 nlSleep (10);
00433 }
00434 }
00435
00436 #ifdef USE_MESSAGE_RECORDER
00437 _MR_UpdateCounter++;
00438 #endif
00439
00440 }
|
|
|
|
This function is implemented in the client and server class.
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 136 of file callback_net_base.h. References nlstop.
00136 { nlstop; return false; }
|
|
|
This function is implemented in the client and server class.
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 132 of file callback_net_base.h. References nlstop. Referenced by baseUpdate().
00132 { nlstop; return false; }
|
|
|
This function is implemented in the client and server class.
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 138 of file callback_net_base.h. References nlstop, and NLNET::TSockId. Referenced by NLNET::cbShardValidation(), processOneMessage(), NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::reset(), and NLNET::uncbServiceIdentification().
00138 { nlstop; }
|
|
|
Definition at line 464 of file callback_net_base.cpp. References _OutputSIDA, checkThreadId(), and NLMISC::CStringIdArray::display(). Referenced by NLNET::CLoginClient::connectToShard().
00465 {
00466 checkThreadId ();
00467
00468 _OutputSIDA.display ();
00469 }
|
|
|
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
||||||||||||
|
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
|
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
|
Force to send all data pending in the send queue. On a client, the hostid isn't used and must be InvalidSockId On a server, you must provide a hostid. Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
|
Definition at line 88 of file callback_net_base.h. References _BytesReceived, and uint64. Referenced by NLNET::CUnifiedNetwork::getBytesReceived().
00088 { return _BytesReceived; }
|
|
|
Definition at line 87 of file callback_net_base.h. References _BytesSent, and uint64. Referenced by NLNET::CUnifiedNetwork::getBytesSent().
00087 { return _BytesSent; }
|
|
|
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
|
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. |
|
|
Use this function to get the String ID Array needed when you want to create a message.
Definition at line 129 of file callback_net_base.h. References _InputSIDA. Referenced by NLNET::cbcMessageRecvAllAssociations(), NLNET::cbnbMessageAskAssociations(), NLNET::cbnbMessageRecvAssociations(), NLNET::cbServerAskUniversalTime(), NLNET::cbShardValidation(), NLNET::CLoginClient::connectToShard(), NLNET::CNetDisplayer::doDisplay(), NLNET::CNamingClient::queryServicePort(), NLNET::CNamingClient::registerService(), NLNET::CNamingClient::registerServiceWithSId(), NLNET::CNamingClient::resendRegisteration(), NLNET::CCallbackServer::sendAllMyAssociations(), setOtherSideAssociations(), and NLNET::CNamingClient::unregisterService().
00129 { return _InputSIDA; }
|
|
|
returns the sockid of a connection. On a server, this function returns the parameter. On a client, it returns the connection.
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Referenced by authorizeOnly(), NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::getAppId(), processOneMessage(), and NLNET::CUnifiedNetwork::CUnifiedConnection::TConnection::setAppId(). |
|
|
Returns the address of the specified host.
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 443 of file callback_net_base.cpp. References nlstop, and NLNET::TSockId. Referenced by NLNET::cbServerAskUniversalTime(), NLNET::cbShardValidation(), and NLNET::uncbServiceIdentification().
00444 {
00445 // should never be called
00446 nlstop;
00447 static CInetAddress tmp;
00448 return tmp;
00449 }
|
|
|
If you ignore all unknown id, the net will not ask for other side to know new association. It's used in the naming service for example because the naming client will never answer. In this case, it will always send the message with the full string name (slower) Definition at line 157 of file callback_net_base.h. References _InputSIDA, and NLMISC::CStringIdArray::ignoreAllUnknownId().
00158 {
00159 _InputSIDA.ignoreAllUnknownId (b);
00160 }
|
|
|
Returns true if this is a CCallbackServer.
Definition at line 126 of file callback_net_base.h. References _IsAServer, and checkThreadId().
00126 { checkThreadId (); return _IsAServer; }
|
|
|
Read a message from the network and process it.
Definition at line 223 of file callback_net_base.cpp. References _BytesReceived, _CallbackArray, _DefaultCallback, _OutputSIDA, NLNET::CBufSock::asString(), NLNET::CBufSock::AuthorizedCallback, checkThreadId(), disconnect(), NLNET::CMessage::getId(), NLNET::CMessage::getName(), getSockId(), NLNET::CMessage::length(), nldebug, nlwarning, receive(), sint16, NLNET::TMsgCallback, NLNET::CMessage::toString(), NLNET::TSockId, NLMISC::CStringIdArray::TStringId, and NLNET::CMessage::TypeHasAnId. Referenced by baseUpdate().
00224 {
00225 checkThreadId ();
00226
00227 // slow down the layer H_AUTO (CCallbackNetBase_processOneMessage);
00228
00229 CMessage msgin (_OutputSIDA, "", true);
00230 TSockId tsid;
00231 receive (msgin, &tsid);
00232
00233 _BytesReceived += msgin.length ();
00234
00235 // now, we have to call the good callback
00236 NLMISC::CStringIdArray::TStringId pos = -1;
00237 if (msgin.TypeHasAnId)
00238 {
00239 pos = msgin.getId ();
00240 }
00241 else
00242 {
00243 std::string name = msgin.getName ();
00244 sint16 i;
00245 for (i = 0; i < (sint16) _CallbackArray.size (); i++)
00246 {
00247 if (name == _CallbackArray[i].Key)
00248 {
00249 pos = i;
00250 break;
00251 }
00252 }
00253 }
00254
00255 TMsgCallback cb = NULL;
00256 if (pos < 0 || pos >= (sint16) _CallbackArray.size ())
00257 {
00258 if (_DefaultCallback == NULL)
00259 {
00260 nlwarning ("LNETL3NB_CB: Callback %s not found in _CallbackArray", msgin.toString().c_str());
00261 }
00262 else
00263 {
00264 cb = _DefaultCallback;
00265 }
00266 }
00267 else
00268 {
00269 cb = _CallbackArray[pos].Callback;
00270 }
00271
00272 TSockId realid = getSockId (tsid);
00273
00274 if (!realid->AuthorizedCallback.empty() && msgin.getName() != realid->AuthorizedCallback)
00275 {
00276 nlwarning ("LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!", tsid->asString().c_str(), msgin.toString().c_str(), tsid->AuthorizedCallback.c_str());
00277 disconnect (tsid);
00278 }
00279 else if (cb == NULL)
00280 {
00281 nlwarning ("LNETL3NB_CB: Callback %s is NULL, can't call it", msgin.toString().c_str());
00282 }
00283 else
00284 {
00285 nldebug ("LNETL3NB_CB: Calling callback (%s)%s", msgin.getName().c_str(), (cb==_DefaultCallback)?" DEFAULT_CB":"");
00286 cb(msgin, realid, *this);
00287 }
00288
00289 /*
00290 if (pos < 0 || pos >= (sint16) _CallbackArray.size ())
00291 {
00292 if (_DefaultCallback == NULL)
00293 nlwarning ("LNETL3NB_CB: Callback %s not found in _CallbackArray", msgin.toString().c_str());
00294 else
00295 {
00296 // ...
00297 }
00298 }
00299 else
00300 {
00301 TSockId realid = getSockId (tsid);
00302
00303 if (!realid->AuthorizedCallback.empty() && msgin.getName() != realid->AuthorizedCallback)
00304 {
00305 nlwarning ("LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!", tsid->asString().c_str(), msgin.toString().c_str(), tsid->AuthorizedCallback.c_str());
00306 disconnect (tsid);
00307 }
00308 else if (_CallbackArray[pos].Callback == NULL)
00309 {
00310 nlwarning ("LNETL3NB_CB: Callback %s is NULL, can't call it", msgin.toString().c_str());
00311 }
00312 else
00313 {
00314 nldebug ("LNETL3NB_CB: Calling callback (%s)", _CallbackArray[pos].Key);
00315 _CallbackArray[pos].Callback (msgin, realid, *this);
00316 }
00317 }
00318 */
00319 }
|
|
||||||||||||
|
On this layer, you can't call directly receive, It s the update() function that receive and call your callaback.
Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Referenced by processOneMessage(). |
|
||||||||||||||||
|
Sends a message to special connection. On a client, the hostid isn't used. On a server, you must provide a hostid. If you hostid = InvalidSockId, the message will be sent to all connected client. Implemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Referenced by baseUpdate(), NLNET::cbnbMessageAskAssociations(), NLNET::cbServerAskUniversalTime(), NLNET::cbShardValidation(), and NLNET::NLMISC_COMMAND(). |
|
|
Used by client and server class.
Reimplemented in NLNET::CCallbackServer. |
|
|
Sets default callback for unknown message types.
Definition at line 110 of file callback_net_base.h. References _DefaultCallback, and NLNET::TMsgCallback. Referenced by NLNET::CUnifiedNetwork::addService(), and NLNET::CUnifiedNetwork::init().
00110 { _DefaultCallback = defaultCallback; }
|
|
||||||||||||
|
Sets callback for disconnections (or NULL to disable callback).
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 113 of file callback_net_base.h. References checkThreadId(), and NLNET::TNetCallback.
00113 { checkThreadId (); _DisconnectionCallback = cb; _DisconnectionCbArg = arg; }
|
|
||||||||||||
|
Gives some association of the other side. The goal is, in specific case, we don't want to ask associations to the other side (client is not secure for example). In this case, we can set other side associations by hand using this functions. Definition at line 451 of file callback_net_base.cpp. References NLMISC::CStringIdArray::addString(), checkThreadId(), getSIDA(), nldebug, sint, and NLMISC::CStringIdArray::TStringId.
00452 {
00453 checkThreadId ();
00454
00455 nldebug ("LNETL3NB_ASSOC: setOtherSideAssociations() sets %d association strings", arraysize);
00456
00457 for (sint i = 0; i < arraysize; i++)
00458 {
00459 nldebug ("LNETL3NB_ASSOC: association '%s' -> %d", associationarray[i], i);
00460 getSIDA().addString (associationarray[i], i);
00461 }
00462 }
|
|
|
This function is implemented in the client and server class.
Reimplemented in NLNET::CCallbackClient, and NLNET::CCallbackServer. Definition at line 134 of file callback_net_base.h. References nlstop, and sint32.
00134 { nlstop; }
|
|
||||||||||||||||
|
Definition at line 88 of file callback_net_base.cpp.
00089 {
00090 CMessage msgout (netbase.getSIDA(), "RA");
00091 CStringIdArray::TStringId size;
00092 msgin.serial (size);
00093
00094 nldebug ("LNETL3NB_ASSOC: The other side want %d string associations", size);
00095
00096 msgout.serial (size);
00097
00098 for (sint i = 0; i < size; i++)
00099 {
00100 string name;
00101 msgin.serial (name);
00102 nldebug ("LNETL3NB_ASSOC: sending association '%s' -> %d", name.c_str (), netbase._OutputSIDA.getId(name));
00103
00104 // if this assert occurs, it means that the other side ask an unknown message
00105 // or that there are different types of client (with differents callbackarray) and one of the client doesn't have this callback
00106 nlassert(netbase._OutputSIDA.getId(name) != -1);
00107
00108 msgout.serial (name);
00109
00110 CStringIdArray::TStringId id = netbase._OutputSIDA.getId (name);
00111 msgout.serial (id);
00112 }
00113 // send the message to the other side
00114 netbase.send (msgout, from);
00115 }
|
|
||||||||||||||||
|
Definition at line 55 of file callback_net_base.cpp.
00056 {
00057 // receive a new message association
00058
00059 CStringIdArray::TStringId size;
00060 msgin.serial (size);
00061
00062 nldebug ("LNETL3NB_ASSOC: The other side gave me %d association strings", size);
00063
00064 for (CStringIdArray::TStringId i = 0; i < size; i++)
00065 {
00066 std::string name;
00067 CStringIdArray::TStringId id;
00068
00069 msgin.serial (name);
00070 msgin.serial (id);
00071
00072 // if id == -1, it means that there are no callback associated to this message
00073 // it should not happen, it mean that one side send a message that the other side
00074 // can't manage in his callbackarray.
00075 // to resolve the problem, add the callback in the callbackarray in the other side
00076 // and put NULL if you don't want to manage this message
00077 nlassert (id != -1);
00078
00079 nldebug ("LNETL3NB_ASSOC: association '%s' -> %d", name.c_str (), id);
00080 netbase.getSIDA().addString (name, id);
00081 }
00082 }
|
|
||||||||||||
|
Definition at line 127 of file callback_net_base.cpp.
00128 {
00129 nlassert (data != NULL);
00130 CCallbackNetBase *base = (CCallbackNetBase *)data;
00131
00132 nldebug("LNETL3NB: cbnbNewDisconnection()");
00133
00134 #ifdef USE_MESSAGE_RECORDER
00135 // Record or replay disconnection
00136 base->noticeDisconnection( from );
00137 #endif
00138
00139 // Call the client callback if necessary
00140 if (base->_DisconnectionCallback != NULL)
00141 base->_DisconnectionCallback (from, base->_DisconnectionCbArg);
00142 }
|
|
|
Definition at line 167 of file callback_net_base.h. Referenced by CCallbackNetBase(), getBytesReceived(), and processOneMessage(). |
|
|
Definition at line 167 of file callback_net_base.h. Referenced by CCallbackNetBase(), and getBytesSent(). |
|
|
Definition at line 196 of file callback_net_base.h. Referenced by addCallbackArray(), and processOneMessage(). |
|
|
Definition at line 199 of file callback_net_base.h. Referenced by processOneMessage(), and setDefaultCallback(). |
|
|
Definition at line 222 of file callback_net_base.h. Referenced by NLNET::cbnbNewDisconnection(). |
|
|
Definition at line 223 of file callback_net_base.h. Referenced by NLNET::cbnbNewDisconnection(). |
|
|
Definition at line 202 of file callback_net_base.h. Referenced by baseUpdate(). |
|
|
Definition at line 188 of file callback_net_base.h. Referenced by baseUpdate(), getSIDA(), and ignoreAllUnknownId(). |
|
|
Definition at line 201 of file callback_net_base.h. Referenced by isAServer(). |
|
|
Definition at line 220 of file callback_net_base.h. Referenced by baseUpdate(). |
|
|
Definition at line 219 of file callback_net_base.h. Referenced by baseUpdate(). |
|
|
Used by client and server class.
Definition at line 170 of file callback_net_base.h. Referenced by CCallbackNetBase(). |
|
|
Definition at line 193 of file callback_net_base.h. Referenced by addCallbackArray(), NLNET::cbnbMessageAskAssociations(), displayAllMyAssociations(), and processOneMessage(). |
|
|
Definition at line 232 of file callback_net_base.h. Referenced by CCallbackNetBase(). |
1.3.6