#include <identtype.h>
Inheritance diagram for NLAIAGENT::CAgentNumber:

Public Types | |
| enum | { DYNAMIC_ID_SIZE = 11, CREATOR_ID_SIZE = 8, TYPE_SIZE = 5, ID_SIZE = 40, UNKNOWN_TYPE = (1 << TYPE_SIZE)-1 } |
Public Member Functions | |
| uint64 | asUint64 () const |
| CAgentNumber (const char *id) | |
| CAgentNumber (NLMISC::IStream &is) | |
| CAgentNumber (const CAgentNumber &a) | |
| CAgentNumber (NLMISC::CEntityId p) | |
| CAgentNumber (uint64 p) | |
| CAgentNumber (uint64 id, uint8 t, uint8 creator, uint8 dyn) | |
| CAgentNumber (uint64 id, uint8 creator, uint8 dyn) | |
| CAgentNumber () | |
| void | fromString (const char *str) |
| Read from a debug string, use the same format as toString() (id:type:creator:dynamic) in hexadecimal. | |
| uint8 | getCreatorId () const |
| Get the persistent creator id. | |
| void | getDebugString (std::string &str) const |
| Have a debug string. | |
| uint8 | getDynamicId () const |
| Get the variable routing info. | |
| uint64 | getRawId () const |
| Get the full id. | |
| uint64 | getShortId () const |
| Get the local entity number. | |
| uint8 | getType () const |
| Get the entity type. | |
| uint64 | getUniqueId () const |
| Get the persistent part of the entity id (the dynamic part in the returned id is 0). | |
| bool | isAgentId () const |
| bool | isUnknownId () const |
| Test if the entity id is Unknown. | |
| void | load (NLMISC::IStream &is) |
| Load the number from an input stream. | |
| const CEntityId & | operator++ (int) |
| virtual bool | operator< (const NLMISC::CEntityId &a) const |
| void | save (NLMISC::IStream &os) |
| Save the Id into an output stream. | |
| void | serial (NLMISC::IStream &f) throw (NLMISC::EStream) |
| void | setCreatorId (uint8 creatorId) |
| Set the persistent creator id. | |
| void | setDynamicId (uint8 dynId) |
| Set the variable routing info. | |
| void | setShortId (uint64 shortId) |
| Set the local entity number. | |
| void | setType (uint8 type) |
| Set the entity type. | |
| void | setTypeAt (uint64 t) |
| That function allow user to change the 7 bit of the type field in the sid agent number; We don't touche at the 8e bits. | |
| std::string | toString () const |
| return a string in form "(a:b:c:d)" where a,b,c,d are components of entity id. | |
Static Public Member Functions | |
| CEntityId | getNewEntityId (uint8 type) |
| Generator of entity ids. | |
| void | setServiceId (uint8 sid) |
| Set the service id for the generator. | |
Static Public Attributes | |
| const uint8 | AgentTypeBit = 0x80 |
| const uint64 | MaxEntityId = ((uint64)1 << (CEntityId::ID_SIZE + 1)) - (uint64)1 |
| The maximume of number that we could generate without generate an overtaking exception. | |
| const CEntityId | Unknown |
| Unknow CEntityId is similar as an NULL pointer. | |
Static Protected Attributes | |
| NLMISC::CEntityId | _NextEntityId |
| Counter for generation of unique entity ids. | |
| uint8 | _ServerId = 0 |
| The local num service id of the local machin. | |
|
|
Definition at line 45 of file entity_id.h.
00046 {
00047 DYNAMIC_ID_SIZE = 11,
00048 CREATOR_ID_SIZE = 8,
00049 TYPE_SIZE = 5,
00050 ID_SIZE = 40,
00051 UNKNOWN_TYPE = (1 << TYPE_SIZE)-1
00052 };
|
|
|
Definition at line 53 of file identtype.h. References NLMISC::CEntityId::setType().
00054 {
00055 setType( CAgentNumber::AgentTypeBit );
00056 }
|
|
||||||||||||||||
|
Definition at line 57 of file identtype.h. References AgentTypeBit, id, uint64, and uint8.
00057 :NLMISC::CEntityId(AgentTypeBit,id,creator,dyn) 00058 { 00059 } |
|
||||||||||||||||||||
|
Definition at line 61 of file identtype.h. References id, t, uint64, and uint8.
00061 :NLMISC::CEntityId(t,id,creator,dyn) 00062 { 00063 } |
|
|
Definition at line 65 of file identtype.h. References uint64.
00065 :NLMISC::CEntityId(p) 00066 { 00067 } |
|
|
Definition at line 69 of file identtype.h.
00069 :NLMISC::CEntityId(p) 00070 { 00071 } |
|
|
Definition at line 73 of file identtype.h.
00073 :NLMISC::CEntityId(a) 00074 { 00075 } |
|
|
Definition at line 77 of file identtype.h.
00077 :NLMISC::CEntityId(is) 00078 { 00079 } |
|
|
Definition at line 81 of file identtype.h. References id.
00081 :NLMISC::CEntityId(id) 00082 { 00083 } |
|
|
Definition at line 401 of file entity_id.h. References NLMISC::CEntityId::FullId, and uint64.
00402 {
00403 return FullId;
00404 }
|
|
|
Read from a debug string, use the same format as toString() (id:type:creator:dynamic) in hexadecimal.
Definition at line 488 of file entity_id.h. References NLMISC::CEntityId::DetailedId, NL_I64, type, uint, and uint64. Referenced by NLMISC::CEntityId::CEntityId(), and NLNET::createMessage().
00490 {
00491 uint64 id;
00492 uint type;
00493 uint creatorId;
00494 uint dynamicId;
00495
00496 if (sscanf(str, "(%"NL_I64"x:%x:%x:%x)", &id, &type, &creatorId, &dynamicId) != 4)
00497 {
00498 *this = Unknown;
00499 return;
00500 }
00501
00502 DetailedId.Id = id;
00503 DetailedId.Type = type;
00504 DetailedId.CreatorId = creatorId;
00505 DetailedId.DynamicId = dynamicId;
00506 }
|
|
|
Get the persistent creator id.
Definition at line 245 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint8. Referenced by operator<().
00246 {
00247 return DetailedId.CreatorId;
00248 }
|
|
|
Have a debug string.
Reimplemented in NLAIAGENT::CIdent. Definition at line 509 of file entity_id.h. References NLMISC::CEntityId::DetailedId, sint, uint64, and x. Referenced by NLAIAGENT::CNumericIndex::getDebugString(), NLAIAGENT::CProxyAgentMail::getDebugString(), and NLMISC::CEntityId::toString().
00511 {
00512 char b[256];
00513 memset(b,0,255);
00514 memset(b,'0',19);
00515 sint n;
00516
00517 uint64 x = DetailedId.Id;
00518 char baseTable[] = "0123456789abcdef";
00519 for(n = 10; n < 20; n ++)
00520 {
00521 b[19 - n] = baseTable[(x & 15)];
00522 x >>= 4;
00523 }
00524 b[19 - 9] = ':';
00525
00526 x = DetailedId.Type;
00527 for(n = 7; n < 9; n ++)
00528 {
00529 b[19 - n] = baseTable[(x & 15)];
00530 x >>= 4;
00531 }
00532 b[19 - 6] = ':';
00533
00534 x = DetailedId.CreatorId;
00535 for(n = 4; n < 6; n ++)
00536 {
00537 b[19 - n] = baseTable[(x & 15)];
00538 x >>= 4;
00539 }
00540 b[19 - 3] = ':';
00541
00542 x = DetailedId.DynamicId;
00543 for(n = 1; n < 3; n ++)
00544 {
00545 b[19 - n] = baseTable[(x & 15)];
00546 x >>= 4;
00547 }
00548 str += "0x" + std::string(b);
00549 }
|
|
|
Get the variable routing info.
Definition at line 233 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint8. Referenced by operator<().
00234 {
00235 return DetailedId.DynamicId;
00236 }
|
|
|
Generator of entity ids.
Definition at line 109 of file entity_id.h. References NLMISC::CEntityId::_NextEntityId, nlassert, NLMISC::CEntityId::setType(), type, and uint8.
00110 {
00111 nlassert(_NextEntityId != Unknown ); // type may be Unknown, so isUnknownId() would return true
00112 NLMISC::CEntityId id = _NextEntityId++;
00113 id.setType( type );
00114 return id;
00115 }
|
|
|
Get the full id.
Definition at line 212 of file entity_id.h. References NLMISC::CEntityId::FullId, and uint64.
00213 {
00214 return FullId;
00215 /*
00216 return (uint64)*this;
00217 */
00218 }
|
|
|
Get the local entity number.
Definition at line 221 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint64. Referenced by operator<().
00222 {
00223 return DetailedId.Id;
00224 }
|
|
|
Get the entity type.
Definition at line 257 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint8. Referenced by NLAIAGENT::IRefrence::IRefrence(), isAgentId(), and setTypeAt().
00258 {
00259 return (uint8)DetailedId.Type;
00260 }
|
|
|
Get the persistent part of the entity id (the dynamic part in the returned id is 0).
Definition at line 269 of file entity_id.h. References NLMISC::CEntityId::FullId, and uint64. Referenced by NLMISC::CEntityId::operator<(), and NLMISC::CEntityId::operator>().
|
|
|
Definition at line 85 of file identtype.h. References AgentTypeBit, and NLMISC::CEntityId::getType(). Referenced by operator<().
00086 {
00087 return (getType() & AgentTypeBit) != 0;
00088 }
|
|
|
Test if the entity id is Unknown.
Definition at line 278 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and NLMISC::CEntityId::UNKNOWN_TYPE.
00279 {
00280 return DetailedId.Type == UNKNOWN_TYPE;
00281 }
|
|
|
Load the number from an input stream.
Reimplemented in NLAIAGENT::CIdent. Definition at line 443 of file entity_id.h. References NLMISC::CEntityId::FullId, and NLMISC::IStream::serial(). Referenced by NLAIAGENT::CNumericIndex::load(), and NLMISC::CEntityId::serial().
00445 {
00446 is.serial(FullId);
00447 /*
00448 uint64 p;
00449 is.serial(p);
00450
00451 DynamicId = (uint64)(p & 0xff);
00452 p >>= 8;
00453 CreatorId = (uint64)(p & 0xff);
00454 p >>= 8;
00455 Type = (uint64)(p & 0xff);
00456 p >>= 8;
00457 Id = (uint64)(p);
00458 */
00459 }
|
|
|
Definition at line 301 of file entity_id.h.
00302 {
00303 return !((*this) == a);
00304 }
|
|
|
Definition at line 358 of file entity_id.h. References NLMISC::CEntityId::DetailedId, NLMISC::CEntityId::MaxEntityId, NL_I64, and nlerror.
00359 {
00360 if(DetailedId.Id < MaxEntityId)
00361 {
00362 DetailedId.Id ++;
00363 }
00364 else
00365 {
00366 nlerror ("CEntityId looped (max was %"NL_I64"d", MaxEntityId);
00367 }
00368 return *this;
00369 }
|
|
|
Definition at line 306 of file entity_id.h. References NLMISC::CEntityId::getUniqueId().
00308 {
00309 return getUniqueId() < a.getUniqueId();
00310
00311 /*
00312 if (Type < a.Type)
00313 {
00314 return true;
00315 }
00316 else if (Type == a.Type)
00317 {
00318 if (Id < a.Id)
00319 {
00320 return true;
00321 }
00322 else if (Id == a.Id)
00323 {
00324 return (CreatorId < a.CreatorId);
00325 }
00326 }
00327 return false;
00328 */
00329 }
|
|
|
Definition at line 90 of file identtype.h. References NLMISC::CEntityId::getCreatorId(), NLMISC::CEntityId::getDynamicId(), NLMISC::CEntityId::getShortId(), isAgentId(), and operator<().
00091 {
00092
00093 if(isAgentId())
00094 {
00095 if (getShortId() < a.getShortId())
00096 {
00097 return true;
00098 }
00099 else
00100 if (getShortId() == a.getShortId())
00101 {
00102 if(getCreatorId() < a.getCreatorId())
00103 {
00104 return true;
00105 }
00106 else
00107 if(getCreatorId() == a.getCreatorId())
00108 {
00109 return getDynamicId() < a.getDynamicId();
00110 }
00111 }
00112 return false;
00113 }
00114 else
00115 {
00116 return CEntityId::operator < (a);
00117 }
00118 }
|
|
|
Definition at line 289 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and NLMISC::CEntityId::FullId.
00291 {
00292
00293 CEntityId testId ( FullId ^ a.FullId );
00294 testId.DetailedId.DynamicId = 0;
00295 return testId.FullId == 0;
00296
00297 /*
00298 return (Id == a.DetailedId.Id && DetailedId.CreatorId == a.DetailedId.CreatorId && DetailedId.Type == a.DetailedId.Type);
00299 */
00300 }
|
|
|
Definition at line 331 of file entity_id.h. References NLMISC::CEntityId::getUniqueId().
00333 {
00334 return getUniqueId() > a.getUniqueId();
00335
00336 /*
00337 if (Type > a.Type)
00338 {
00339 return true;
00340 }
00341 else if (Type == a.Type)
00342 {
00343 if (Id > a.Id)
00344 {
00345 return true;
00346 }
00347 else if (Id == a.Id)
00348 {
00349 return (CreatorId > a.CreatorId);
00350 }
00351 }
00352 // lesser
00353 return false;
00354 */
00355 }
|
|
|
Save the Id into an output stream.
Reimplemented in NLAIAGENT::CIdent. Definition at line 426 of file entity_id.h. References NLMISC::CEntityId::FullId, and NLMISC::IStream::serial(). Referenced by NLAIAGENT::CNumericIndex::save(), NLAIAGENT::CProxyAgentMail::save(), and NLMISC::CEntityId::serial().
00428 {
00429 os.serial(FullId);
00430 /*
00431 uint64 p = Id;
00432 p <<= 8;
00433 p |= (uint64)Type;
00434 p <<= 8;
00435 p |= (uint64)CreatorId;
00436 p <<= 8;
00437 p |= (uint64)DynamicId;
00438 os.serial(p);
00439 */
00440 }
|
|
|
Definition at line 462 of file entity_id.h. References NLMISC::CEntityId::load(), and NLMISC::CEntityId::save().
|
|
|
Set the persistent creator id.
Definition at line 251 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint8. Referenced by NLMISC::CEntityIdTranslator::checkEntity(), NLLOGIC::CLogicEventMessage::CLogicEventMessage(), NLLOGIC::CLogicStateMachine::displayVariables(), NLMISC::CEntityIdTranslator::getByEntity(), NLMISC::CEntityIdTranslator::getEntityIdInfo(), NLMISC::CEntityIdTranslator::getEntityNameStringId(), NLMISC::CEntityIdTranslator::isEntityOnline(), NLMISC::NLMISC_COMMAND(), NLMISC::CEntityIdTranslator::registerEntity(), NLMISC::CEntityIdTranslator::setEntityOnline(), NLAILINK::setLocalServerID(), NLMISC::CEntityId::setServiceId(), and NLMISC::CEntityIdTranslator::unregisterEntity().
00252 {
00253 DetailedId.CreatorId = creatorId;
00254 }
|
|
|
Set the variable routing info.
Definition at line 239 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint8. Referenced by NLMISC::CEntityIdTranslator::checkEntity(), NLLOGIC::CLogicEventMessage::CLogicEventMessage(), NLLOGIC::CLogicStateMachine::displayVariables(), NLMISC::CEntityIdTranslator::getByEntity(), NLMISC::CEntityIdTranslator::getEntityIdInfo(), NLMISC::CEntityIdTranslator::getEntityNameStringId(), NLMISC::CEntityIdTranslator::isEntityOnline(), NLMISC::NLMISC_COMMAND(), NLMISC::CEntityIdTranslator::registerEntity(), NLMISC::CEntityIdTranslator::setEntityOnline(), NLAILINK::setLocalServerID(), NLMISC::CEntityId::setServiceId(), and NLMISC::CEntityIdTranslator::unregisterEntity().
00240 {
00241 DetailedId.DynamicId = dynId;
00242 }
|
|
|
Set the service id for the generator.
Definition at line 101 of file entity_id.h. References NLMISC::CEntityId::_NextEntityId, NLMISC::CEntityId::_ServerId, NLMISC::CEntityId::setCreatorId(), NLMISC::CEntityId::setDynamicId(), and uint8. Referenced by NLNET::IService::main(), and NLAILINK::setLocalServerID().
00102 {
00103 _NextEntityId.setDynamicId( sid );
00104 _NextEntityId.setCreatorId( sid );
00105 _ServerId = sid;
00106 }
|
|
|
Set the local entity number.
Definition at line 227 of file entity_id.h. References NLMISC::CEntityId::DetailedId, and uint64.
00228 {
00229 DetailedId.Id = shortId;
00230 }
|
|
|
Set the entity type.
Definition at line 263 of file entity_id.h. References NLMISC::CEntityId::DetailedId, type, and uint8. Referenced by CAgentNumber(), NLLOGIC::CLogicEventMessage::CLogicEventMessage(), NLLOGIC::CLogicStateMachine::displayVariables(), NLMISC::CEntityId::getNewEntityId(), and setTypeAt().
00264 {
00265 DetailedId.Type = type;
00266 }
|
|
|
That function allow user to change the 7 bit of the type field in the sid agent number; We don't touche at the 8e bits.
Definition at line 121 of file identtype.h. References NLMISC::CEntityId::getType(), NLMISC::CEntityId::setType(), t, type, uint64, and uint8. Referenced by NLAIAGENT::CNumericIndex::setTypeAt().
|
|
|
return a string in form "(a:b:c:d)" where a,b,c,d are components of entity id.
Definition at line 480 of file entity_id.h. References NLMISC::CEntityId::getDebugString(). Referenced by NLMISC::CEntityIdTranslator::checkEntity(), NLMISC::CEntityIdTranslator::getEntityIdInfo(), NLMISC::CEntityIdTranslator::isEntityOnline(), NLMISC::NLMISC_COMMAND(), NLMISC::CEntityIdTranslator::registerEntity(), NLMISC::CEntityIdTranslator::setEntityOnline(), and NLMISC::CEntityIdTranslator::unregisterEntity().
00481 {
00482 std::string id;
00483 getDebugString (id);
00484 return "(" + id + ")";
00485 }
|
|
|
Counter for generation of unique entity ids.
Definition at line 36 of file entity_id.cpp. Referenced by NLMISC::CEntityId::getNewEntityId(), and NLMISC::CEntityId::setServiceId(). |
|
|
The local num service id of the local machin.
Definition at line 38 of file entity_id.cpp. Referenced by NLMISC::CEntityId::CEntityId(), and NLMISC::CEntityId::setServiceId(). |
|
|
All agents id'S numbers have the 8th bit reserved on NLMISC::CEntityId::Type byte The CEntityId::Type field is for AI an user bits field becarful we dont't touch at the 8e bits. Definition at line 28 of file ident.cpp. Referenced by CAgentNumber(), and isAgentId(). |
|
|
Id of the service who created the entity (persistent).
Definition at line 66 of file entity_id.h. |
|
|
|
Id of the service where the entity is (variable routing info).
Definition at line 64 of file entity_id.h. |
|
|
Definition at line 73 of file entity_id.h. Referenced by NLMISC::CEntityId::asUint64(), NLMISC::CEntityId::CEntityId(), NLMISC::CEntityId::getRawId(), NLMISC::CEntityId::getUniqueId(), NLMISC::CEntityId::load(), NLMISC::CEntityId::operator=(), NLMISC::CEntityId::operator==(), and NLMISC::CEntityId::save(). |
|
|
Local entity number (persistent).
Definition at line 70 of file entity_id.h. |
|
|
The maximume of number that we could generate without generate an overtaking exception.
Definition at line 34 of file entity_id.cpp. Referenced by NLMISC::CEntityId::operator++(). |
|
|
Type of the entity (persistent).
Definition at line 68 of file entity_id.h. |
|
|
Unknow CEntityId is similar as an NULL pointer.
|
1.3.6