本文整理汇总了C++中socket_ptr::lowest_layer方法的典型用法代码示例。如果您正苦于以下问题:C++ socket_ptr::lowest_layer方法的具体用法?C++ socket_ptr::lowest_layer怎么用?C++ socket_ptr::lowest_layer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类socket_ptr
的用法示例。
在下文中一共展示了socket_ptr::lowest_layer方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: on_async_connect
// 异步连接回调
void on_async_connect(error_code const& ec, socket_ptr sp, endpoint addr)
{
if (ec)
{
// 错误
ec_ = ec;
async_connecting_.reset();
notify_onconnect(); // 通知连接结果
}
else if (sp->lowest_layer().remote_endpoint() == sp->lowest_layer().local_endpoint())
{
// 回环假链接, 重试.
async_connecting_.reset();
if (!async_connect(addr))
{
if (!ec_) ec_ = make_error_code(errc::reconnect_error);
notify_onconnect();
}
}
else
{
// 连接成功, 握手
async_handshake(sp, addr);
}
}
示例2: on_async_connect_timed
// 异步连接回调(带超时)
void on_async_connect_timed(error_code const& ec, socket_ptr sp
, endpoint addr, boost::posix_time::time_duration timed)
{
if (ec)
{
// 错误
ec_ = ec;
async_connecting_.reset();
notify_onconnect();
}
else if (sp->lowest_layer().remote_endpoint() == sp->lowest_layer().local_endpoint())
{
// 回环假链接, 重试.
async_connecting_.reset();
if (!async_connect_timed(addr, timed))
{
if (!ec_) ec_ = make_error_code(errc::reconnect_error);
notify_onconnect();
}
return ;
}
else
{
// 连接成功, 握手
async_handshake(sp, addr);
}
}
示例3: on_overtime
// 超时回调
void on_overtime(error_code const& ec, socket_ptr sp, errc error_enum)
{
if (ec)
return ;
// 超时了
error_code lec;
sp->lowest_layer().cancel(lec);
sp->lowest_layer().shutdown(socket_base::shutdown_both, lec);
sp->lowest_layer().close(lec);
async_connecting_.reset();
ec_ = make_error_code(error_enum);
notify_onconnect();
}
示例4: inboundLoop
void inboundLoop(socket_ptr sock, string_ptr prompt)
{
int bytesRead = 0;
char readBuf[1024] = {0};
for(;;)
{
if(sock->lowest_layer().available())
{
bytesRead = sock->read_some(buffer(readBuf, inputSize));
string_ptr msg(new string(readBuf, bytesRead));
messageQueue->push(msg);
}
boost::this_thread::sleep( boost::posix_time::millisec(1000));
}
}
示例5: on_async_handshake
// 握手回调
void on_async_handshake(error_code const& ec, socket_ptr sp, endpoint addr)
{
async_handshaking_.reset();
if (ec)
{
ec_ = ec;
async_connecting_.reset();
if (on_handshake_error_)
mstrand_service_.post(BEX_IO_BIND(
on_handshake_error_, ec, sp->lowest_layer().remote_endpoint()));
}
else
{
ec_.clear();
running_.set();
async_connecting_.reset();
session_ = make_shared_ptr<session_type, allocator>();
session_->initialize(sp, opts_, callback_);
}
notify_onconnect();
}