本文整理汇总了C++中boost::system::error_code类的典型用法代码示例。如果您正苦于以下问题:C++ error_code类的具体用法?C++ error_code怎么用?C++ error_code使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了error_code类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleAcceptError
void Server::handleAcceptError(const boost::system::error_code& ec)
{
std::cout << "ERROR error reason:" << ec.value() << " " << ec.message() << std::endl;
stopAccept();
}
示例2: handle_read_head
void SSLSession::handle_read_head(const boost::system::error_code& error, size_t bytes_transferred, IMessage* req)
{
if (error)
{
gFileLog::instance().Log("SSLSession 读包头失败, 错误代码:" + boost::lexical_cast<std::string>(error.value()) + ", 错误消息:" + error.message());
close();
return;
}
if (bytes_transferred != req->GetMsgHeaderSize())
{
gFileLog::instance().Log("SSLSession 读包头失败,需要读:" + boost::lexical_cast<std::string>(req->GetMsgHeaderSize()) + ", 实际读:" + boost::lexical_cast<std::string>(bytes_transferred) );
close();
return;
}
if (!req->DecoderMsgHeader())
{
gFileLog::instance().Log("SSLSession 解码包头失败");
close();
return;
}
boost::asio::async_read(socket_,
boost::asio::buffer(req->GetMsgContent(), req->GetMsgContentSize()),
boost::asio::transfer_all(),
strand_.wrap(
bind(&SSLSession::handle_read_msg, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, req)
)
);
}
示例3: onSend
void UdpClient::onSend( const string& message, const boost::system::error_code& error,
std::size_t bytesTransferred )
{
OutputDebugStringA( ( error.message() + "\n" ).c_str() );
}
示例4: output_error
void server_conn::output_error( std::string err_msg, const boost::system::error_code &e )
{
cerr<<err_msg<<", error message: "<<e.message()<<endl;
}
示例5: lg
void smtp_client::connection::got_response(std::string resp, boost::system::error_code ec, size_t bytes) {
if (ec) {
NSC_LOG_ERROR("smtp failure in reading: " + ec.message());
boost::lock_guard<boost::mutex> lg(sc->m);
if (cur)
sc->ready.push_back(cur);
sc->active_connection.reset();
return;
}
std::string line;
line.reserve(bytes);
for (size_t i = 0; i < bytes; i++)
line += char(readbuf.sbumpc());
resp += line;
if (line.length() >= 4 && line[3] == '-') {
boost::asio::async_read_until(serv, readbuf, "\r\n", boost::bind(&connection::got_response, shared_from_this(), resp, _1, _2));
return;
}
NSC_DEBUG_MSG("smtp read " + resp);
bool broken_resp = resp.empty() || !('2' <= resp[0] && resp[0] <= '5') || (resp[0] == '3' && (state != DATA || resp.substr(0,3) != "354"));
// FIXME deferral / drop-on-the-floor notifications
if (broken_resp || resp[0] == '4')
{
boost::lock_guard<boost::mutex> lg(sc->m);
if (cur)
sc->deferred.push_back(cur);
}
if (broken_resp || state == QUIT) {
NSC_LOG_ERROR("smtp terminating");
boost::lock_guard<boost::mutex> lg(sc->m);
sc->active_connection.reset();
return;
}
if ((resp[0] == '4' || resp[0] == '5' || state == DATA_354) && (resp.substr(0,3) != "502" || state != EHLO)) {
cur.reset();
if (sc->ready.empty() || state <= RSET) {
state = QUIT;
send_line("QUIT");
} else {
state = RSET;
send_line("RSET");
}
return;
}
assert(!resp.empty());
switch (state) {
case BANNER:
assert(resp[0] == '2');
state = EHLO;
send_line("EHLO " + config["canonical-name"]);
break;
case EHLO:
if (resp.substr(0,3) == "502")
{
state = HELO;
send_line("HELO" + config["canonical-name"]);
break;
}
assert(resp[0] == '2');
/* passthrough */
case HELO:
case RSET:
assert(resp[0] == '2');
assert(!cur);
{
boost::lock_guard<boost::mutex> lg(sc->m);
if (sc->ready.empty())
{
state = QUIT;
send_line("QUIT");
break;
}
cur = sc->ready.front();
sc->ready.pop_front();
}
assert(cur);
state = MAIL_FROM;
send_line("MAIL FROM: <" + cur->sender + ">");
break;
case MAIL_FROM:
assert(resp[0] == '2');
assert(cur);
state = RCPT_TO;
send_line("RCPT TO: <" + cur->recipient + ">");
break;
case RCPT_TO:
assert(resp[0] == '2');
assert(cur);
state = DATA;
//.........这里部分代码省略.........
示例6: error_callback
inline void error_callback(boost::system::error_code e)
{
std::cerr << "System error: " << e.message() << std::endl;
std::exit(1);
}
示例7: request_failed
void HTTPClient::request_failed(const boost::system::error_code& err)
{
logger << "HTTPClient Request failed: " << err.message() << ". Retrying." << std::endl;
abort_request();
}
示例8: handleRead
void ClientConnection::handleRead( const boost::system::error_code& error )
{
if ( error == 0)
{
// invoke a thread to handle the message
boost::thread worker( &ClientConnection::handleReadInThread,
this,
message );
// back to listen
waitForData();
}
else
{
// if an error occurs, close the connection
std::stringstream stream;
stream << "ClientConnection (" << technicalId << ") > handleRead call with error code: " << error.value() << " --> " << error.message();
AsyncLogger::getInstance()->log( stream.str() );
connectionManager->closeConnection( shared_from_this() );
}
}
示例9: future_error
future_error(boost::system::error_code ec)
: logic_error(ec.message())
, ec_(ec)
{}
示例10: handle_error
/* Some error occured at lower levels. Logging it and deactivating the current session seems legit.
*/
void ServerProtocolDispatcher::handle_error(
boost::system::error_code error)
{
std::cout << "ServerProtocolDispatcher::handle_error: " << error.message() << std::endl;
_active = false;
}
示例11: handle_write_msg
void SSLSession::handle_write_msg(const boost::system::error_code& error, size_t bytes_transferred, IMessage* resp)
{
if (error)
{
gFileLog::instance().Log("SSLSession 写包内容失败, 错误代码:" + boost::lexical_cast<std::string>(error.value()) + ", 错误消息:" + error.message());
close();
return;
}
if (bytes_transferred != resp->GetMsgContentSize())
{
gFileLog::instance().Log("SSLSession 写包内容失败 需要写:" + boost::lexical_cast<std::string>(resp->GetMsgContentSize()) + ", 实际写:" + boost::lexical_cast<std::string>(bytes_transferred) );
close();
return;
}
// 存入日志队列
resp->SetSendTime();
gFileLogManager::instance().push(resp->log);
gDistributedLogManager::instance().push(resp->log);
/*
if (resp->GetMsgHeader()->FunctionNo == 0)
{
// 心跳功能不写日志
}
else
{
}
*/
// 删除应答包
resp->destroy();
}
示例12: handle_write_head
void SSLSession::handle_write_head(const boost::system::error_code& error, size_t bytes_transferred, IMessage* resp)
{
if (error)
{
gFileLog::instance().Log("SSLSession 写包头失败,错误代码:" + boost::lexical_cast<std::string>(error.value()) + ", 错误消息:" + error.message());
close();
return;
}
if (bytes_transferred != resp->GetMsgHeaderSize())
{
gFileLog::instance().Log("SSLSession 写包头失败 需要写:" + boost::lexical_cast<std::string>(resp->GetMsgHeaderSize()) + ", 实际写:" + boost::lexical_cast<std::string>(bytes_transferred) );
close();
return;
}
try
{
boost::asio::async_write(socket_,
boost::asio::buffer(resp->GetMsgContent(), resp->GetMsgContentSize()),
boost::asio::transfer_all(),
strand_.wrap(
bind(&SSLSession::handle_write_msg, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred, resp)
)
);
}
catch(std::exception& e)
{
std::string expMsg = e.what();
gFileLog::instance().Log("SSLSession handle_write_head exp: " + expMsg);
}
}
示例13: handle_read_msg
void SSLSession::handle_read_msg(const boost::system::error_code& error, size_t bytes_transferred, IMessage* req)
{
if (error)
{
gFileLog::instance().Log("SSLSession 读包内容失败, 错误代码:" + boost::lexical_cast<std::string>(error.value()) + ", 错误消息:" + error.message());
close();
return;
}
if (bytes_transferred != req->GetMsgContentSize())
{
gFileLog::instance().Log("SSLSession 读包内容失败 需要读:" + boost::lexical_cast<std::string>(req->GetMsgContentSize()) + ", 实际读:" + boost::lexical_cast<std::string>(bytes_transferred) );
close();
return;
}
// 设置接收到的时间
req->SetRecvTime();
queue_.push(req);
read();
}
示例14: peer
boost::system::error_code Connector::connect(
SocketType & peer1,
NetName const & netname,
boost::system::error_code & ec)
{
typedef typename SocketType::protocol_type::socket socket;
typedef typename socket::endpoint_type endpoint_type;
socket & peer(peer1); // we should use the real socket type, not the child type
if (netname.is_digit()) {
return connect(peer, netname.endpoint(), ec);
}
if (!started_) {
canceled_ = canceled_forever_;
stat_.reset();
connect_started_ = false;
boost::asio::detail::mutex::scoped_lock lock(mutex_);
if (canceled_) {
ec = boost::asio::error::operation_aborted;
canceled_ = false;
} else {
lock.unlock();
resolver_iterator_ = resolver_.resolve(netname, ec);
lock.lock();
}
stat_.resolve_time = stat_.elapse();
if (ec) {
return ec;
} else if (canceled_) {
canceled_ = false;
return ec = boost::asio::error::operation_aborted;
}
started_ = true;
}
ResolverIterator end;
for (; resolver_iterator_ != end; ++resolver_iterator_) {
if (!connect_started_) {
Endpoint const & e = *resolver_iterator_;
{
boost::asio::detail::mutex::scoped_lock lock(mutex_);
if (canceled_) {
ec = boost::asio::error::operation_aborted;
canceled_ = false;
} else {
if (peer.is_open()) {
peer.close(ec);
}
boost::asio::socket_base::non_blocking_io cmd1(non_block_);
#ifndef UNDER_CE
boost::asio::socket_base::receive_time_out cmd2(time_out_);
#endif
ec || peer.open(endpoint_type(e).protocol(), ec)
|| peer.io_control(cmd1, ec)
#ifndef UNDER_CE
|| peer.set_option(cmd2, ec)
#endif
;
}
}
if (ec) {
break;
}
LOG_TRACE("[connect] try server, ep: " << e.to_string());
start_connect(peer, e, ec);
} else {
ec = boost::asio::error::would_block;
}
if (ec == boost::asio::error::would_block) {
pool_connect(peer, ec);
}
if (ec != boost::asio::error::would_block) {
if (!ec) {
post_connect(peer, ec);
} else {
boost::system::error_code ec1;
post_connect(peer, ec1);
}
}
if (!ec || ec == boost::asio::error::would_block || canceled_) {
break;
}
LOG_DEBUG("[connect] failed, ep: " <<
resolver_iterator_->to_string() << ",ec: " << ec.message());
} // for
if ((!ec || ec == boost::asio::error::would_block) && canceled_) {
ec = boost::asio::error::operation_aborted;
}
if (ec != boost::asio::error::would_block) {
stat_.connect_time = stat_.elapse();
started_ = false;
canceled_ = false;
}
return ec;
}
示例15: AddServer
/*
* Connects to a server
* - on success: adds all server related elements
* - on failure: retries
*/
void Communication::AddServer(const boost::system::error_code& error,
boost::shared_ptr<boost::asio::ip::tcp::socket> soc,
boost::asio::ip::tcp::endpoint endpoint,
boost::shared_ptr<std::string> server,
boost::shared_ptr<std::string> ip,
boost::shared_ptr<std::string> port)
{
// remote host is now connected
if (!error)
{
// lock any "sockets_.size()" usage/modification
com_mutex_.lock();
// add a pub, along with all related pub elements
sockets_.push_back(soc);
servers_.push_back(server);
boost::shared_ptr< boost::array<char, 30> > new_buf_ptr(new boost::array<char, 30>);
new_buf_ptr->assign(0);
buf_.push_back(new_buf_ptr);
is_reading_.push_back(false);
Connection new_server;
new_server.pub_id = *server;
new_server.ip = *ip;
new_server.port = *port;
connections_.push_back(new_server);
// report successful connection
out_mutex_.lock();
std::cout << "\n[" << boost::this_thread::get_id()
<< "] >> Connection to " << *server
<< " at " << endpoint << " succeded \n" << std::endl;
out_mutex_.unlock();
// let the read operations begin/continue
is_pending_add_ = false;
pending_add_condition_.notify_one();
// unlock any "sockets_.size()" usage/modification
com_mutex_.unlock();
// inform on first connection
if (sockets_.size() == 1)
{
pending_first_condition_->notify_one();
}
}
// remote host is not connected yet
else if (error.message() == "Connection refused")
{
// try again
usleep(100000);
soc.reset(new boost::asio::ip::tcp::socket(*io_service_));
soc->async_connect(endpoint,
boost::bind(&Communication::AddServer,
this,
boost::asio::placeholders::error(),
soc,
endpoint,
server,
ip,
port));
}
else // report error
{
out_mutex_.lock();
std::cout << "[" << boost::this_thread::get_id()
<< "] Error: " << error.message() << std::endl;
out_mutex_.unlock();
}
}