summaryrefslogtreecommitdiff
path: root/src/syncSocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/syncSocket.cpp')
-rw-r--r--src/syncSocket.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/syncSocket.cpp b/src/syncSocket.cpp
new file mode 100644
index 0000000..96da70c
--- /dev/null
+++ b/src/syncSocket.cpp
@@ -0,0 +1,82 @@
+#include <sstream>
+#include <iostream>
+#include <string>
+#include "routingTable.h"
+#include "rtpSessionTable.h"
+#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/text_iarchive.hpp>
+
+
+//#include "connectionParam.h"
+#include "Sockets/Utility.h"
+#include "syncSocket.h"
+#include "syncCommand.h"
+#include "buffer.h"
+//#include "log.h"
+
+SyncSocket::SyncSocket(ISocketHandler& h,ConnectionList & cl)
+:TcpSocket(h),cl_(cl)
+{
+ SetConnectTimeout(12);
+}
+
+
+
+void SyncSocket::OnAccept()
+{
+// Send( Utility::GetLocalHostname() + "\n");
+// Send( Utility::GetLocalAddress() + "\n");
+// Send("Number of sockets in list : " + Utility::l2string(Handler().GetCount()) + "\n");
+// Send("\n");
+ //TODO Locking here
+ 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 StatusSocket::InitSSLServer()
+//{
+// InitializeContext("server.pem", "keypwd", SSLv23_method());
+//}
+//
+//
+//void StatusSocket::Init()
+//{
+// EnableSSL();
+//}