diff --git a/src/peer.cc b/src/peer.cc index 27e2580..6503904 100644 --- a/src/peer.cc +++ b/src/peer.cc @@ -412,6 +412,7 @@ namespace p2psp { uint16_t player_port = Console::GetDefaultPlayerPort(); std::string splitter_addr = p2psp::Peer_core::GetDefaultSplitterAddr().to_string(); uint16_t splitter_port = p2psp::Peer_core::GetDefaultSplitterPort(); + std::string channel_url; #if not defined __IMS__ int max_chunk_debt = p2psp::Peer_DBS::GetDefaultMaxChunkDebt(); uint16_t team_port = p2psp::Peer_core::GetDefaultTeamPort(); @@ -423,6 +424,7 @@ namespace p2psp { // TODO: strpe option should expect a list of arguments, not bool desc.add_options() ("help,h", "Produce this help message and exits.") + ("channel_url", boost::program_options::value(), "Channel url to get splitter address from crossroads engine") #if not defined __IMS__ ("max_chunk_debt", boost::program_options::value()->default_value(max_chunk_debt), "Maximum number of times that other peer can not send a chunk to this peer.") #endif @@ -501,6 +503,7 @@ namespace p2psp { class Console* peer = new Console(); // }}} + if (vm.count("smart_source_client")) { // {{{ @@ -518,13 +521,29 @@ namespace p2psp { // }}} } - + if (vm.count("channel_url")) { + + TRACE("Channel URL = " + << vm["channel_url"].as()); + std::string splitter_source = peer->RESTSplitter(vm["channel_url"].as()); + int delimeter=splitter_source.find(":"); + std::string splitter_addr = splitter_source.substr(0,delimeter); + std::string splitter_port=splitter_source.substr(delimeter+1); + peer->SetSplitterAddr(ip::address::from_string("127.0.0.1")); + TRACE("Splitter address = " + << peer->GetSplitterAddr()); + peer->SetSplitterPort(std::stoi(splitter_port)); + TRACE("Splitter port = " + << peer->GetSplitterPort()); + } + peer->WaitForThePlayer(); std::cout << "Player connected" << std::endl; + - if (vm.count("splitter_addr")) { + if (vm.count("splitter_addr") && !(vm.count("channel_url"))) { // {{{ peer->SetSplitterAddr(ip::address::from_string(vm["splitter_addr"].as())); @@ -534,7 +553,7 @@ namespace p2psp { // }}} } - if (vm.count("splitter_port")) { + if (vm.count("splitter_port") && !(vm.count("channel_url"))) { // {{{ peer->SetSplitterPort(vm["splitter_port"].as());