Created
October 15, 2018 14:34
-
-
Save jachiang/19f025813ab8c187ad92aa61af6e6dce to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <bitcoin/bitcoin.hpp> | |
#include <bitcoin/network.hpp> | |
int main() | |
{ | |
// Default network settings. | |
bc::network::settings settings(bc::config::settings::testnet); | |
// Print out seeds for seeding. | |
auto seeds_list = settings.seeds; | |
for (const auto seed : seeds_list) | |
{ | |
std::cout << seed.to_string() << std::endl; | |
} | |
// Set to non-zero (Defaults to zero). | |
settings.host_pool_capacity = 10; | |
// Promise which signals completion to main loop. | |
static std::promise<bc::code> complete; | |
// Create P2P object. | |
bc::network::p2p my_p2p(settings); | |
// Handlers (p2p_start, verack_subscription, p2p_run) | |
// ------------------------------------------------------------------------- | |
const auto subscription_handler = [](const bc::code& ec, | |
bc::message::verack::const_ptr message) | |
{ | |
// ?? | |
std::cout << "Verack received" << std::endl; | |
return true; | |
}; | |
const auto connect_handler = [&subscription_handler](const bc::code& ec, | |
bc::network::channel::ptr channel) | |
{ | |
// If error keep trying. | |
if (ec) | |
return true; | |
// Subscribe to messages on this channel. | |
channel->template subscribe<bc::message::verack>(subscription_handler); | |
return true; | |
}; | |
const auto run_handler = [&my_p2p](const bc::code& ec) | |
{ | |
// TODO: | |
}; | |
const auto start_handler = [&my_p2p, &connect_handler ,&run_handler]( | |
const bc::code& ec) | |
{ | |
// Print out host addresses. | |
bc::message::network_address::list host_addresses; | |
my_p2p.fetch_addresses(host_addresses); | |
for (const auto host : host_addresses) | |
{ | |
std::cout << bc::encode_base16(bc::to_chunk(host.ip())) << std::endl; | |
} | |
// Stop if error with seeding session. | |
if (ec) | |
complete.set_value(ec); | |
// Network run. | |
my_p2p.subscribe_connection(connect_handler); | |
my_p2p.run(run_handler); | |
}; | |
// Start P2P object. | |
// ------------------------------------------------------------------------- | |
my_p2p.start(start_handler); | |
std::cout << complete.get_future().get().message() << std::endl; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment