updates to thread / udt socket

This commit is contained in:
Daniel Larimer 2014-06-26 20:10:56 -04:00
parent 8670a4722f
commit d2072e9d3a
2 changed files with 18 additions and 10 deletions

View file

@ -175,6 +175,10 @@ namespace fc {
auto async( Functor&& f, const char* desc ="", priority prio = priority()) -> fc::future<decltype(f())> {
return fc::thread::current().async( fc::forward<Functor>(f), desc, prio );
}
template<typename Functor>
auto schedule( Functor&& f, const fc::time_point& t, const char* desc ="", priority prio = priority()) -> fc::future<decltype(f())> {
return fc::thread::current().schedule( fc::forward<Functor>(f), t, desc, prio );
}
} // end namespace fc

View file

@ -11,6 +11,16 @@
namespace fc {
void check_udt_errors()
{
UDT::ERRORINFO& error_info = UDT::getlasterror();
if( error_info.getErrorCode() )
{
std::string error_message = error_info.getErrorMessage();
error_info.clear();
FC_CAPTURE_AND_THROW( udt_exception, (error_message) );
}
}
class udt_epoll_service
{
@ -18,6 +28,8 @@ namespace fc {
udt_epoll_service()
:_epoll_thread("udt_epoll")
{
UDT::startup();
check_udt_errors();
_epoll_id = UDT::epoll_create();
_epoll_loop = _epoll_thread.async( [=](){ poll_loop(); } );
}
@ -25,6 +37,8 @@ namespace fc {
~udt_epoll_service()
{
_epoll_loop.cancel();
_epoll_loop.wait();
UDT::cleanup();
}
void poll_loop()
@ -111,16 +125,6 @@ namespace fc {
}
void check_udt_errors()
{
UDT::ERRORINFO& error_info = UDT::getlasterror();
if( error_info.getErrorCode() )
{
std::string error_message = error_info.getErrorMessage();
error_info.clear();
FC_CAPTURE_AND_THROW( udt_exception, (error_message) );
}
}
udt_socket::udt_socket()
:_udt_socket_id( UDT::INVALID_SOCK )