mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-13 01:20:22 +03:00
Merge pull request #20 from orignal/master
Merge pull request from orignal/master
This commit is contained in:
commit
0c133362af
@ -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),
|
||||||
|
@ -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 ();
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user