// no size information -> no packet
if (buffer.size() < sizeof(unsigned int))
- return false;
+ return 0;
packet_size_indicator psize=*((packet_size_indicator*)(buffer.data()));
// enough data for one packet in buffer?
if (buffer.size() < sizeof(unsigned int)+psize)
- return false;
+ return 0;
// ok, full packet there
- return true;
+ return psize;
}
+/** @brief read a complete data packet from the buffer. The packet is removed from the
+ connection buffer.
+ @param[out] data the data package
+ @retval true if packet found
+*/
bool connection::get_packet(std::string& data)
{
packet_size_indicator psize;
return false;
}
+/// send a blob to the peer
void connection::write(const std::string& data)
{
// prepend packet size to data
packet_size_indicator psize=data.size();
std::string send_data(data);
- send_data.insert(0,(char*)psize,sizeof(packet_size_indicator));
+ send_data.insert(0,(char*)&psize,sizeof(packet_size_indicator));
real_write(send_data);
}
-
-
}