void elFlowPort::receivedMsg( QByteArray msg ) { while( msg.size() > 0 && (_inMsg || msg.contains( ":" )) ) { int index = 0; if( !_inMsg ) { index = msg.indexOf( ":" ); if( index < 0 ) { return; } _inMsg = true; } for( ; index < msg.size(); index++ ) { if( msg.at( index ) == '\r' ) { decodeMsg( _buffer ); _inMsg = false; _buffer.clear(); break; } _buffer.append( msg.at( index) ); } msg = msg.mid( index+1 ); } }
uint32_t MamaRecordedMessageCodec::decodeVectorMsg(char*& buffer, MamaMsg* mm, mama_fid_t mff) { return 0; uint16_t vector_size = 0; uint16_t vector_length = 0; uint32_t r = 4; uint32_t msg_size = 0; memcpy(&vector_size, buffer, 2); buffer += 2; memcpy(&vector_length, buffer, 2); buffer += 2; MamaMsg** vectorMsg = new MamaMsg*[vector_length]; //prinft("Decoding Vector Message of size %d\n", vector_size+4); for (int i=0; i< vector_length; i++) { //prinft("Decoding Vector Message [%d]...\n", i); vectorMsg[i] = new MamaMsg; vectorMsg[i]->create(); msg_size += decodeMsg(buffer, vectorMsg[i]); buffer += msg_size; r += msg_size; } mm->addVectorMsg(NULL, mff, vectorMsg, vector_length); for (int i=0; i< vector_length; i++) { vectorMsg[i]->clear(); delete vectorMsg[i]; } delete vectorMsg; return r; }
static void doDecodeMessage( // extract message from tables char *buff, // - buffer MSG_NUM msg ) // - message { IntlData *data = internationalData; if( data != NULL ) { if( msg < data->errors_count ) { strcpy( buff, data->errors_text[ msg ] ); return; } } decodeMsg( buff, msg ); }