From 3c66fe726ae8044b2d3ce90115217a6240473598 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sun, 19 Oct 2008 20:23:49 +0000 Subject: now with files --- src/syncTcpConnection.cpp | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/syncTcpConnection.cpp (limited to 'src/syncTcpConnection.cpp') diff --git a/src/syncTcpConnection.cpp b/src/syncTcpConnection.cpp new file mode 100644 index 0000000..185781f --- /dev/null +++ b/src/syncTcpConnection.cpp @@ -0,0 +1,80 @@ +#include "syncTcpConnection.h" +#include +#include + +#include +#include +#include +#include "routingTable.h" +#include "rtpSessionTable.h" +#include +#include + + +#include "syncCommand.h" +#include "buffer.h" + + asio::ip::tcp::socket& SyncTcpConnection::socket() + { + return socket_; + } + +void SyncTcpConnection::start() +{ + ConnectionList & cl_(gConnectionList); + ConnectionMap::iterator cit = cl_.getBeginUnlocked(); + for (;cit!=cl_.getEndUnlocked();++cit) + { + std::ostringstream sout; + boost::archive::text_oarchive oa(sout); + const SyncCommand scom(cl_,cit->first); + oa << scom; + std::stringstream lengthout; + lengthout << std::setw(5) << std::setfill('0') << sout.str().size()<< ' '; + Send(lengthout.str()); + Send(sout.str()); + } + //TODO Locking here + RoutingMap::iterator it = gRoutingTable.getBeginUnlocked(); + for (;it!=gRoutingTable.getEndUnlocked();++it) + { + NetworkPrefix tmp(it->first); + std::ostringstream sout; + boost::archive::text_oarchive oa(sout); + const SyncCommand scom(tmp); + oa << scom; + std::stringstream lengthout; + lengthout << std::setw(5) << std::setfill('0') << sout.str().size()<< ' '; + Send(lengthout.str()); + Send(sout.str()); + } + //TODO Locking here + RtpSessionMap::iterator rit = gRtpSessionTable.getBeginUnlocked(); + for (;rit!=gRtpSessionTable.getEndUnlocked();++rit) + { + std::ostringstream sout; + boost::archive::text_oarchive oa(sout); + const SyncCommand scom(rit->first); + oa << scom; + std::stringstream lengthout; + lengthout << std::setw(5) << std::setfill('0') << sout.str().size()<< ' '; + Send(lengthout.str()); + Send(sout.str()); + } +} +void SyncTcpConnection::Send(std::string message) +{ + asio::async_write(socket_, asio::buffer(message), + boost::bind(&SyncTcpConnection::handle_write, shared_from_this(), + asio::placeholders::error, + asio::placeholders::bytes_transferred)); +} +SyncTcpConnection::SyncTcpConnection(asio::io_service& io_service) + : socket_(io_service) +{ +} + +void SyncTcpConnection::handle_write(const asio::error_code& /*error*/, + size_t /*bytes_transferred*/) +{ +} -- cgit v1.2.3