updates to thread / udt socket
This commit is contained in:
parent
8670a4722f
commit
d2072e9d3a
2 changed files with 18 additions and 10 deletions
|
|
@ -175,6 +175,10 @@ namespace fc {
|
||||||
auto async( Functor&& f, const char* desc ="", priority prio = priority()) -> fc::future<decltype(f())> {
|
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 );
|
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
|
} // end namespace fc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,16 @@
|
||||||
|
|
||||||
namespace fc {
|
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
|
class udt_epoll_service
|
||||||
{
|
{
|
||||||
|
|
@ -18,6 +28,8 @@ namespace fc {
|
||||||
udt_epoll_service()
|
udt_epoll_service()
|
||||||
:_epoll_thread("udt_epoll")
|
:_epoll_thread("udt_epoll")
|
||||||
{
|
{
|
||||||
|
UDT::startup();
|
||||||
|
check_udt_errors();
|
||||||
_epoll_id = UDT::epoll_create();
|
_epoll_id = UDT::epoll_create();
|
||||||
_epoll_loop = _epoll_thread.async( [=](){ poll_loop(); } );
|
_epoll_loop = _epoll_thread.async( [=](){ poll_loop(); } );
|
||||||
}
|
}
|
||||||
|
|
@ -25,6 +37,8 @@ namespace fc {
|
||||||
~udt_epoll_service()
|
~udt_epoll_service()
|
||||||
{
|
{
|
||||||
_epoll_loop.cancel();
|
_epoll_loop.cancel();
|
||||||
|
_epoll_loop.wait();
|
||||||
|
UDT::cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void poll_loop()
|
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::udt_socket()
|
||||||
:_udt_socket_id( UDT::INVALID_SOCK )
|
:_udt_socket_id( UDT::INVALID_SOCK )
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue