void print_alerts(lt::session& ses , std::function<void(lt::session&, lt::alert const*)> on_alert) { lt::time_point start_time = lt::clock_type::now(); ses.set_alert_notify([&ses,start_time,on_alert] { ses.get_io_service().post([&ses,start_time,on_alert] { try { std::vector<lt::alert*> alerts; ses.pop_alerts(&alerts); for (lt::alert const* a : alerts) { std::printf("%-3d [0] %s\n", int(lt::duration_cast<lt::seconds>(a->timestamp() - start_time).count()), a->message().c_str()); // call the user handler on_alert(ses, a); } } catch (std::exception const& e) { std::printf("print alerts: ERROR failed with exception: %s" , e.what()); } catch (...) { std::printf("print alerts: ERROR failed with (unknown) exception"); } } ); } ); }
void filter_ips(lt::session& ses) { ip_filter filter; filter.add_rule(address_v4::from_string("50.0.0.1") , address_v4::from_string("50.0.0.2"), ip_filter::blocked); ses.set_ip_filter(filter); }
void add_ip_filter(lt::session& ses) { lt::ip_filter filter; // filter out 0-2 inclusive filter.add_rule( asio::ip::address_v4::from_string("60.0.0.0") , asio::ip::address_v4::from_string("60.0.0.2") , lt::ip_filter::blocked); ses.set_ip_filter(filter); }
void print_alerts(lt::session& ses , std::function<void(lt::session&, lt::alert const*)> on_alert) { lt::time_point start_time = lt::clock_type::now(); ses.set_alert_notify([&ses,start_time,on_alert] { ses.get_io_service().post([&ses,start_time,on_alert] { std::vector<lt::alert*> alerts; ses.pop_alerts(&alerts); for (lt::alert const* a : alerts) { printf("%-3d [0] %s\n", int(lt::duration_cast<lt::seconds>(a->timestamp() - start_time).count()), a->message().c_str()); // call the user handler on_alert(ses, a); } } ); } ); }
int get_cache_size(lt::session& ses) { std::vector<stats_metric> stats = session_stats_metrics(); int const read_cache_idx = find_metric_idx("disk.read_cache_blocks"); int const write_cache_idx = find_metric_idx("disk.write_cache_blocks"); TEST_CHECK(read_cache_idx >= 0); TEST_CHECK(write_cache_idx >= 0); ses.set_alert_notify([](){}); ses.post_session_stats(); std::vector<alert*> alerts; ses.pop_alerts(&alerts); int cache_size = -1; for (auto const a : alerts) { if (auto const* st = alert_cast<session_stats_alert>(a)) { cache_size = st->values[read_cache_idx]; cache_size += st->values[write_cache_idx]; break; } } return cache_size; }
void set_proxy(lt::session& ses, int proxy_type, int flags, bool proxy_peer_connections) { // apply the proxy settings to session 0 settings_pack p; p.set_int(settings_pack::proxy_type, proxy_type); if (proxy_type == settings_pack::socks4) p.set_int(settings_pack::proxy_port, 4444); else p.set_int(settings_pack::proxy_port, 5555); if (flags & ipv6) p.set_str(settings_pack::proxy_hostname, "2001::2"); else p.set_str(settings_pack::proxy_hostname, "50.50.50.50"); p.set_bool(settings_pack::proxy_hostnames, true); p.set_bool(settings_pack::proxy_peer_connections, proxy_peer_connections); p.set_bool(settings_pack::proxy_tracker_connections, true); ses.apply_settings(p); }
void set_cache_size(lt::session& ses, int val) { settings_pack pack; pack.set_int(settings_pack::cache_size, val); ses.apply_settings(pack); }
void enable_enc(lt::session& ses) { settings_pack p; enable_enc(p); ses.apply_settings(p); }
void utp_only(lt::session& ses) { settings_pack p; utp_only(p); ses.apply_settings(p); }