bool UccSession::classifyMessage (BufferType& buff, TypeId& type, KeyType& key) { bool found = AbsSessionType::classifyMessage(buff, type, key); if ((!found) && (!m_buffer.empty())) { SizeType parsedSize = 0; SizeType structureSize = 0; gvr::utils::Json json; unsigned char flag = 0; switch (IUccClassifyMessage::parseToStructure(m_buffer,parsedSize,structureSize,flag,json)) { case IClassifyMessageType::Integrity::CComplete: case IClassifyMessageType::Integrity::CUnknown: { if (parsedSize) { if (m_buffer.size() > parsedSize) { buff.reserve(parsedSize); buff.assign(m_buffer.begin(),m_buffer.begin()+(parsedSize)); SizeType remainingSize = (m_buffer.size()-parsedSize); BufferType remainingBuffer; remainingBuffer.reserve(remainingSize); remainingBuffer.assign(m_buffer.begin()+(parsedSize),m_buffer.end()); m_buffer.swap(remainingBuffer); } else { m_buffer.swap(buff); m_buffer.clear(); } type = UccMessageAny::GetTypeId(); key = UccMessageAny::CDefaultKey; found = true; } else { m_buffer.clear(); } } break; case IClassifyMessageType::Integrity::CIncomplete: break; default: { m_buffer.clear(); } break; } } return found; }