Browse Source

async receive

pull/48/head
orignal 10 years ago
parent
commit
06b2500347
  1. 9
      Streaming.cpp
  2. 7
      Streaming.h

9
Streaming.cpp

@ -248,7 +248,12 @@ namespace stream @@ -248,7 +248,12 @@ namespace stream
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;
while (pos < len)
{
@ -269,7 +274,7 @@ namespace stream @@ -269,7 +274,7 @@ namespace stream
break;
}
return pos;
}
}
bool Stream::SendPacket (Packet * packet)
{

7
Streaming.h

@ -97,6 +97,7 @@ namespace stream @@ -97,6 +97,7 @@ namespace stream
void SavePacket (Packet * packet);
void ProcessPacket (Packet * packet);
size_t ConcatenatePackets (uint8_t * buf, size_t len);
void UpdateCurrentRemoteLease ();
@ -207,13 +208,13 @@ namespace stream @@ -207,13 +208,13 @@ namespace stream
template<typename Buffer, typename ReceiveHandler>
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)
// timeout not expired
handler (boost::system::error_code (), 0);
handler (boost::system::error_code (), received);
else
// 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…
Cancel
Save