本文整理汇总了C++中channel_ptr::get方法的典型用法代码示例。如果您正苦于以下问题:C++ channel_ptr::get方法的具体用法?C++ channel_ptr::get怎么用?C++ channel_ptr::get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类channel_ptr
的用法示例。
在下文中一共展示了channel_ptr::get方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: is_duplicate_block_ask
bool poller::is_duplicate_block_ask(const block_locator_type& locator,
const hash_digest& hash_stop, channel_ptr node)
{
return
last_locator_begin_ == locator.front() &&
last_hash_stop_ == hash_stop &&
last_requested_node_ == node.get();
}
示例2: ask_blocks
// Not having orphans will cause a stall
void poller::ask_blocks(const std::error_code& ec,
const block_locator_type& locator, const hash_digest& hash_stop,
channel_ptr node)
{
if (!node)
return;
if (ec)
{
log_debug(LOG_POLLER)
<< "Failed to fetch block locator: " << ec.message();
return;
}
if (is_duplicate_block_ask(locator, hash_stop, node))
{
log_debug(LOG_POLLER)
<< "Skipping duplicate ask blocks with locator front ["
<< encode_hash(locator.front()) << "]";
return;
}
log_debug(LOG_POLLER)
<< "Ask for blocks with stop ["
<< encode_hash(hash_stop) << "]";
const auto handle_error = [node](const std::error_code& ec)
{
if (!node)
return;
if (ec)
{
log_debug(LOG_POLLER)
<< "Send get blocks problem: " << ec.message();
// TODO: modify send() to terminate the connection on send failure.
node->stop();
}
};
// Send get_blocks request.
const get_blocks_type packet{ locator, hash_stop };
node->send(packet, handle_error);
// Update last values.
last_locator_begin_ = locator.front();
last_hash_stop_ = hash_stop;
last_requested_node_ = node.get();
}