View in context in the libbitcoin Slack #general mirror.
void session_outbound::attach_protocols(channel::ptr channel)
{
const auto version = channel->negotiated_version();
if (version >= version::level::bip31)
attach<protocol_ping_60001>(channel)->start();
else
attach<protocol_ping_31402>(channel)->start();
if (version >= version::level::bip61)
attach<protocol_reject_70002>(channel)->start();
if (version >= version::level::headers)
attach<protocol_header_in>(channel, chain_)->start();
attach<protocol_block_in>(channel, chain_)->start();
attach<protocol_transaction_in>(channel, chain_)->start();
attach<protocol_transaction_out>(channel, chain_)->start();
attach<protocol_address_31402>(channel)->start();
using serve = system::message::version::service;
const auto services = settings_.services;
if ((services & serve::node_compact_filters) == serve::node_compact_filters)
attach<protocol_compact_filter_out>(channel, chain_)->start();
}