From 66f819a24c8aef7b963d6ec108768c46c3060130 Mon Sep 17 00:00:00 2001 From: Shivanjan Chakravorty Date: Thu, 24 May 2018 17:38:53 +0530 Subject: [PATCH 1/3] RESTSplitter function added --- src/core/peer_core.cc | 34 ++++++++++++++++++++++++++++++++++ src/core/peer_core.h | 1 + 2 files changed, 35 insertions(+) diff --git a/src/core/peer_core.cc b/src/core/peer_core.cc index 8efe0e7..75c6a52 100644 --- a/src/core/peer_core.cc +++ b/src/core/peer_core.cc @@ -573,6 +573,40 @@ namespace p2psp { // }}} } + + + std::string Peer_core::RESTSplitter(std::string channel_url) { + std::string req ("GET /channel/"+channel_url); + + + ip::tcp::resolver resolver(); + + ip::tcp::socket rest; + ip::tcp::endpoint source_ep(ip::address::from_string("127.0.0.1"),3000); + rest->connect(source_ep); + + boost::asio::io_service& io_service; + boost::asio::ip::tcp::socket socket; + boost::asio::ip::tcp::resolver resolver(io_service); + boost::asio::ip::tcp::resolver::iterator endpoint = resolver.resolve(boost::asio::ip::tcp::resolver::query(host, port)); + boost::asio::connect(rest, endpoint); + + rest.send(boost::asio::buffer(req)) + + boost::asio::write + (rest, + boost::asio::buffer(req,req.length()) + ); + + boost::asio::streambuf request; + + std::string data=""; + while(boost::asio::read(rest,request)){ + data=data+&request+"\n"; + } + + return data; + } uint16_t Peer_core::GetSplitterPort() { // {{{ diff --git a/src/core/peer_core.h b/src/core/peer_core.h index 47636cc..3cb2614 100644 --- a/src/core/peer_core.h +++ b/src/core/peer_core.h @@ -85,6 +85,7 @@ namespace p2psp { virtual void Init(); + std::string RESTSplitter(std::string channel_url); virtual void SetSplitterAddr(ip::address splitter_addr); virtual ip::address GetSplitterAddr(); static ip::address GetDefaultSplitterAddr(); From 0f451a94c6eb85e75cfc9292937497bf85ff0b4e Mon Sep 17 00:00:00 2001 From: Shivanjan Chakravorty Date: Sun, 27 May 2018 15:58:56 +0530 Subject: [PATCH 2/3] Added funcrtion RESTSplitter:sets splitter address for given channel url --- src/core/peer_core.cc | 48 ++++++++++++++++--------------------------- src/core/peer_core.h | 2 +- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/core/peer_core.cc b/src/core/peer_core.cc index 75c6a52..5d3bb3c 100644 --- a/src/core/peer_core.cc +++ b/src/core/peer_core.cc @@ -576,36 +576,24 @@ namespace p2psp { std::string Peer_core::RESTSplitter(std::string channel_url) { - std::string req ("GET /channel/"+channel_url); - - - ip::tcp::resolver resolver(); - - ip::tcp::socket rest; - ip::tcp::endpoint source_ep(ip::address::from_string("127.0.0.1"),3000); - rest->connect(source_ep); - - boost::asio::io_service& io_service; - boost::asio::ip::tcp::socket socket; - boost::asio::ip::tcp::resolver resolver(io_service); - boost::asio::ip::tcp::resolver::iterator endpoint = resolver.resolve(boost::asio::ip::tcp::resolver::query(host, port)); - boost::asio::connect(rest, endpoint); - - rest.send(boost::asio::buffer(req)) - - boost::asio::write - (rest, - boost::asio::buffer(req,req.length()) - ); - - boost::asio::streambuf request; - - std::string data=""; - while(boost::asio::read(rest,request)){ - data=data+&request+"\n"; - } - - return data; + boost::system::error_code ec; + io_service svc; + ip::tcp::socket rest(svc); + rest.connect({ {}, 3000 }); + std::string request("GET /channel/"+channel_url+" HTTP/1.1\r\n\r\n"); + rest.send(buffer(request)); + std::string data; + + do { + char buf[1024]; + size_t bytes_transferred = rest.receive(buffer(buf), {}, ec); + if (!ec) data.append(buf, buf + bytes_transferred); + } while (!ec); + + int split=data.find("\"splitterAddress\":\"")+19; + int next_split=data.find("\"",split); + data=data.substr(split,next_split-split); + return data; } uint16_t Peer_core::GetSplitterPort() { diff --git a/src/core/peer_core.h b/src/core/peer_core.h index 3cb2614..4f6df83 100644 --- a/src/core/peer_core.h +++ b/src/core/peer_core.h @@ -85,7 +85,7 @@ namespace p2psp { virtual void Init(); - std::string RESTSplitter(std::string channel_url); + virtual std::string RESTSplitter(std::string channel_url); virtual void SetSplitterAddr(ip::address splitter_addr); virtual ip::address GetSplitterAddr(); static ip::address GetDefaultSplitterAddr(); From 5be4010b20f3b84eebc1d50aaf0a57a5a6d873ff Mon Sep 17 00:00:00 2001 From: Shivanjan Chakravorty Date: Wed, 6 Jun 2018 14:19:52 +0530 Subject: [PATCH 3/3] Python 2.x to 3.x environment This resolves the Travis CI build conflict --- make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.py b/make.py index ab076e0..49ef5dc 100755 --- a/make.py +++ b/make.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 #from __future__ import print_function import os