Changeset 6417 for code/trunk/src/libraries/network/packet/FunctionIDs.cc
- Timestamp:
- Dec 25, 2009, 10:23:58 PM (15 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/libraries/network/packet/FunctionIDs.cc
r5781 r6417 47 47 48 48 FunctionIDs::FunctionIDs( ) : Packet(){ 49 std::string functionname; 50 unsigned int nrOfFunctions=0; 49 unsigned int nrOfFunctions=0; 51 50 unsigned int packetSize=2*sizeof(uint32_t); //space for the packetID and for the nroffunctions 52 51 uint32_t networkID; 53 52 flags_ = flags_ | PACKET_FLAGS_FUNCTIONIDS; 54 53 std::queue<std::pair<uint32_t, std::string> > tempQueue; 55 54 56 55 //calculate total needed size (for all strings and integers) 57 56 ObjectList<NetworkFunctionBase>::iterator it; 58 57 for(it = ObjectList<NetworkFunctionBase>::begin(); it; ++it){ 59 functionname = it->getName();58 const std::string& functionname = it->getName(); 60 59 networkID = it->getNetworkID(); 61 60 // now push the network id and the classname to the stack … … 64 63 packetSize += (functionname.size()+1)+sizeof(uint32_t)+sizeof(uint32_t); // reserver size for the functionname string, the functionname length and the networkID 65 64 } 66 65 67 66 this->data_=new uint8_t[ packetSize ]; 68 67 //set the appropriate packet id 69 68 assert(this->data_); 70 69 *(Type::Value *)(this->data_ + _PACKETID ) = Type::FunctionIDs; 71 70 72 71 uint8_t *temp=data_+sizeof(uint32_t); 73 72 // save the number of all classes 74 73 *(uint32_t*)temp = nrOfFunctions; 75 74 temp += sizeof(uint32_t); 76 75 77 76 // now save all classids and classnames 78 77 std::pair<uint32_t, std::string> tempPair; … … 85 84 temp+=2*sizeof(uint32_t)+tempPair.second.size()+1; 86 85 } 87 86 88 87 COUT(5) << "FunctionIDs packetSize is " << packetSize << endl; 89 88 90 89 } 91 90 … … 106 105 temp += sizeof(uint32_t); 107 106 totalsize += sizeof(uint32_t); // storage size for nr of all classes 108 107 109 108 for(unsigned int i=0; i<nrOfFunctions; i++){ 110 109 totalsize += 2*sizeof(uint32_t) + *(uint32_t*)(temp + sizeof(uint32_t)); // for each network function add size for id, sizeof(string) and length of string itself to totalsize … … 121 120 uint32_t stringsize; 122 121 unsigned char *functionname; 123 122 124 123 COUT(4) << "=== processing functionids: " << endl; 125 124 std::pair<uint32_t, std::string> tempPair; … … 127 126 nrOfFunctions = *(uint32_t*)temp; 128 127 temp += sizeof(uint32_t); 129 128 130 129 for( int i=0; i<nrOfFunctions; i++){ 131 130 networkID = *(uint32_t*)temp;
Note: See TracChangeset
for help on using the changeset viewer.