Merge pull request #20 from orignal/master

Merge pull request from orignal/master
This commit is contained in:
chertov 2014-03-27 07:16:21 +03:00
commit 0c133362af
4 changed files with 17 additions and 7 deletions

View File

@ -277,6 +277,9 @@ namespace util
} }
} }
void HTTPConnection::HandleStreamReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred)
{
}
HTTPServer::HTTPServer (int port): HTTPServer::HTTPServer (int port):
m_Thread (nullptr), m_Work (m_Service), m_Thread (nullptr), m_Work (m_Service),

View File

@ -44,7 +44,8 @@ namespace util
void Terminate (); void Terminate ();
void Receive (); void Receive ();
void HandleReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred); void HandleReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred);
void HandleStreamReceive (const boost::system::error_code& ecode, std::size_t bytes_transferred);
void HandleWrite(const boost::system::error_code& ecode); void HandleWrite(const boost::system::error_code& ecode);
void HandleRequest (); void HandleRequest ();

View File

@ -248,7 +248,12 @@ namespace stream
return 0; return 0;
} }
// either non-empty or we have received empty // either non-empty or we have received something
return ConcatenatePackets (buf, len);
}
size_t Stream::ConcatenatePackets (uint8_t * buf, size_t len)
{
size_t pos = 0; size_t pos = 0;
while (pos < len) while (pos < len)
{ {
@ -269,7 +274,7 @@ namespace stream
break; break;
} }
return pos; return pos;
} }
bool Stream::SendPacket (Packet * packet) bool Stream::SendPacket (Packet * packet)
{ {

View File

@ -97,6 +97,7 @@ namespace stream
void SavePacket (Packet * packet); void SavePacket (Packet * packet);
void ProcessPacket (Packet * packet); void ProcessPacket (Packet * packet);
size_t ConcatenatePackets (uint8_t * buf, size_t len);
void UpdateCurrentRemoteLease (); void UpdateCurrentRemoteLease ();
@ -200,20 +201,20 @@ namespace stream
void Stream::AsyncReceive (const Buffer& buffer, ReceiveHandler handler, int timeout) void Stream::AsyncReceive (const Buffer& buffer, ReceiveHandler handler, int timeout)
{ {
m_ReceiveTimer.expires_from_now (boost::posix_time::seconds(timeout)); m_ReceiveTimer.expires_from_now (boost::posix_time::seconds(timeout));
m_ReceiveTimer.async_wait (boost::bind (&Stream::HandleReceiveTimer, m_ReceiveTimer.async_wait (boost::bind (&Stream::HandleReceiveTimer<Buffer, ReceiveHandler>,
this, boost::asio::placeholders::error, buffer, handler)); this, boost::asio::placeholders::error, buffer, handler));
} }
template<typename Buffer, typename ReceiveHandler> template<typename Buffer, typename ReceiveHandler>
void Stream::HandleReceiveTimer (const boost::system::error_code& ecode, const Buffer& buffer, ReceiveHandler handler) void Stream::HandleReceiveTimer (const boost::system::error_code& ecode, const Buffer& buffer, ReceiveHandler handler)
{ {
// TODO: size_t received = ConcatenatePackets (boost::asio::buffer_cast<uint8_t *>(buffer), boost::asio::buffer_size(buffer));
if (ecode == boost::asio::error::operation_aborted) if (ecode == boost::asio::error::operation_aborted)
// timeout not expired // timeout not expired
handler (boost::system::error_code (), 0); handler (boost::system::error_code (), received);
else else
// timeout expired // timeout expired
handler (boost::asio::error::make_error_code (boost::asio::error::timed_out), 0); handler (boost::asio::error::make_error_code (boost::asio::error::timed_out), received);
} }
} }
} }