libt2n: (gerd) basic command handling (still some todos)
[libt2n] / src / command_client.cpp
diff --git a/src/command_client.cpp b/src/command_client.cpp
new file mode 100644 (file)
index 0000000..0d387b9
--- /dev/null
@@ -0,0 +1,60 @@
+/***************************************************************************
+ *   Copyright (C) 2006 by Gerd v. Egidy                                   *
+ *   gve@intra2net.com                                                     *
+ *                                                                         *
+ *   This library is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU Lesser General Public License version   *
+ *   2.1 as published by the Free Software Foundation.                     *
+ *                                                                         *
+ *   This library is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU Lesser General Public License for more details.                   *
+ *                                                                         *
+ *   You should have received a copy of the GNU Lesser General Public      *
+ *   License along with this program; if not, write to the                 *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include <string>
+#include <sstream>
+
+#include <boost/archive/binary_oarchive.hpp>
+#include <boost/archive/binary_iarchive.hpp>
+#include <boost/archive/xml_oarchive.hpp>
+#include <boost/archive/xml_iarchive.hpp>
+#include <boost/serialization/serialization.hpp>
+#include <boost/serialization/export.hpp>
+
+#include "command_client.hxx"
+
+using namespace std;
+
+namespace libt2n
+{
+
+void command_client::send_command(command* cmd, result_container &res)
+{
+    ostringstream ofs;
+    command_container cc(cmd);
+    boost::archive::binary_oarchive oa(ofs);
+
+    // TODO: exceptions
+    oa << cc;
+
+    c.write(ofs.str());
+
+    // TODO: fix timeout
+    string resultpacket;
+    while(!c.get_packet(resultpacket))
+        c.fill_buffer();
+
+    istringstream ifs(resultpacket);
+    boost::archive::binary_iarchive ia(ifs);
+
+    // TODO: exceptions
+    ia >> res;
+}
+
+}