void protocol::receive_address_message(const std::error_code& ec, const address_type& packet, channel_ptr node) { if (ec) { log_error(LOG_PROTOCOL) << "Problem receiving addresses: " << ec.message(); return; } log_debug(LOG_PROTOCOL) << "Storing addresses."; for (const network_address_type& net_address: packet.addresses) hosts_.store(net_address, strand_.wrap( &protocol::handle_store_address, this, _1)); node->subscribe_address(strand_.wrap( &protocol::receive_address_message, this, _1, _2, node)); }
void protocol::seeds::request_addresses( const std::error_code& ec, channel_ptr dns_seed_node) { if (ec) { log_error(LOG_PROTOCOL) << "Failed to connect to seed node: " << ec.message(); error_case(ec); } else { dns_seed_node->send(get_address_type(), strand_.wrap(std::bind(&protocol::seeds::handle_send_get_address, shared_from_this(), _1))); dns_seed_node->subscribe_address( strand_.wrap(std::bind(&protocol::seeds::save_addresses, shared_from_this(), _1, _2, dns_seed_node))); } }
void protocol::subscribe_address(channel_ptr node) { node->subscribe_address( strand_.wrap(std::bind(&protocol::receive_address_message, this, _1, _2, node))); }