X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fcommand_server.cpp;h=e7d6d4da02a839074cd733766961f3474f7e8bdb;hp=d3721a867bbc6e6ecaaacec8b699774b9e51cd8b;hb=28cb45a5725e9c6054d7048a9bf969b9f2c94d64;hpb=a7170401dd90dc79cc7d7a808cfe18a06c7e983b diff --git a/src/command_server.cpp b/src/command_server.cpp index d3721a8..e7d6d4d 100644 --- a/src/command_server.cpp +++ b/src/command_server.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -27,6 +28,8 @@ #include #include +#include + #include "command_server.hxx" #include "container.hxx" #include "log.hxx" @@ -36,6 +39,18 @@ using namespace std; namespace libt2n { +command_server::command_server(server& _s) + : s(_s) +{ + // register callback + s.add_callback(new_connection,bind(&command_server::new_connection_callback, boost::ref(*this), _1)); +} + +void command_server::new_connection_callback(server_connection* conn) +{ + cerr << "new connection callback: " << conn->get_id() << endl; +} + /// handle a command including deserialization and answering void command_server::handle_packet(const std::string& packet, server_connection* conn) { @@ -49,6 +64,14 @@ void command_server::handle_packet(const std::string& packet, server_connection* // TODO: catch ia >> ccont; + std::ostream* ostr; + if ((ostr=s.get_logstream(fulldebug))!=NULL) + { + (*ostr) << "decoded packet data: " << std::endl; + boost::archive::xml_oarchive xo(*ostr); + xo << BOOST_SERIALIZATION_NVP(ccont); + } + // TODO: cast to command subclass (template) command *cmd=ccont.get_command(); @@ -74,6 +97,13 @@ void command_server::handle_packet(const std::string& packet, server_connection* // TODO: catch oa << res; + if ((ostr=s.get_logstream(fulldebug))!=NULL) + { + (*ostr) << "returning result, decoded data: " << std::endl; + boost::archive::xml_oarchive xo(*ostr); + xo << BOOST_SERIALIZATION_NVP(res); + } + conn->write(ofs.str()); }