X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fconnection.cpp;h=361cfda8f42384ccc365e9af506f012bb2c11808;hp=0b445ef1a42d24d9dd85a31b5d090b4a69484071;hb=28cb45a5725e9c6054d7048a9bf969b9f2c94d64;hpb=a11e19b7adab2d5b937573701959562f06087ac5 diff --git a/src/connection.cpp b/src/connection.cpp index 0b445ef..361cfda 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -19,6 +19,7 @@ #include #include +#include #include "connection.hxx" @@ -31,18 +32,23 @@ connection::packet_size_indicator connection::bytes_available() // 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; @@ -57,16 +63,15 @@ bool connection::get_packet(std::string& data) 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); } - - }