- // total length of message (including ending \n)\r
- len=endmessage+endlen;\r
-\r
- // allocate space for message\r
- buffer=new char[len+1];\r
-\r
- // copy message from receive buffer to message buffer\r
- std::copy(m_receivebuffer.begin(),m_receivebuffer.begin()+len,buffer);\r
- buffer[len]='\0';\r
-\r
- // remove from receive buffer\r
- m_receivebuffer.erase(m_receivebuffer.begin(),m_receivebuffer.begin()+len);\r
-\r
- // set buffer position\r
- buffpos=buffer;\r
-\r
- // find message name\r
- buffpos=strtok(buffer,"\n");\r
- message.SetName(buffer);\r
-\r
- do\r
- {\r
- // find next field\r
- prevpos=buffpos;\r
- buffpos=strtok(NULL,"=");\r
-\r
- // continue if we aren't at the end of a regular message, or at Data for an AllData message\r
- if(strncmp(buffpos,"EndMessage\n",11)!=0 && strncmp(buffpos,"Data\n",5)!=0) //!(strncmp(message->MessageName,"AllData",7)==0 && strncmp(buffpos,"Data\n",5)==0))\r
- {\r
-\r
- // find next value\r
- prevpos=buffpos;\r
- buffpos=strtok(NULL,"\n");\r
-\r
- if(prevpos && buffpos)\r
- {\r
- message[prevpos]=buffpos;\r
- }\r
-\r
- field++;\r
- }\r
- else\r
- {\r
- buffpos=0;\r
- }\r
-\r
- }while(buffpos!=0);\r
-\r
- delete [] buffer;\r
-\r