X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fcommand_server.cpp;h=4f386ec97b14e9952a17abd9cbf05adb2115139a;hp=3bfc0e3b542321581238702009a8e8661a2773f3;hb=b604df5f671b5e7abfd37570d76927a6ebd45f98;hpb=d535333ffe637c9e547e68b792f334c229641520 diff --git a/src/command_server.cpp b/src/command_server.cpp index 3bfc0e3..4f386ec 100644 --- a/src/command_server.cpp +++ b/src/command_server.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -27,15 +28,44 @@ #include #include +#include + #include "command_server.hxx" #include "container.hxx" #include "log.hxx" +#ifdef HAVE_CONFIG_H +#include +#endif + using namespace std; namespace libt2n { +command_server::command_server(server& _s) + : s(_s) +{ + // register callback + s.add_callback(new_connection,bind(&command_server::send_hello, boost::ref(*this), _1)); +} + +void command_server::send_hello(unsigned int conn_id) +{ + server_connection* sc=s.get_connection(conn_id); + + ostringstream hello; + + hello << "T2Nv" << PROTOCOL_VERSION << ';'; + + int byteordercheck=1; + hello.write((char*)&byteordercheck,sizeof(byteordercheck)); + + hello << ';'; + + sc->write(hello.str()); +} + /// handle a command including deserialization and answering void command_server::handle_packet(const std::string& packet, server_connection* conn) { @@ -93,12 +123,12 @@ void command_server::handle_packet(const std::string& packet, server_connection* } /** @brief handle incoming commands - @param usec_timeout wait until new data is found, max timeout usecs. - -1: wait endless, 0: no timeout + @param[in,out] usec_timeout wait until new data is found, max timeout usecs. + -1: wait endless, 0: instant return */ -void command_server::handle(long long usec_timeout) +void command_server::handle(long long usec_timeout, long long* usec_timeout_remaining) { - if (s.fill_buffer(usec_timeout)) + if (s.fill_buffer(usec_timeout,usec_timeout_remaining)) { string packet; unsigned int conn_id;