[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/base/strigi/src/daemon/dbus
From:       Jos van den Oever <jos () vandenoever ! info>
Date:       2006-08-31 21:28:11
Message-ID: 1157059691.595574.1302.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 579345 by vandenoever:

Fixes to messages (de)marshalling in the DBus interface.

 M  +1 -1      dbusclientinterface.cpp  
 M  +39 -2     dbusmessagereader.cpp  
 M  +4 -1      dbusmessagereader.h  
 M  +17 -17    dbusmessagewriter.cpp  
 M  +1 -1      dbusserver.h  
 M  +17 -0     dbustestinterface.cpp  
 M  +1 -0      dbustestinterface.h  
 M  +4 -0      testinterface.cpp  
 M  +1 -0      testinterface.h  


--- trunk/playground/base/strigi/src/daemon/dbus/dbusclientinterface.cpp #579344:579345
@@ -1,4 +1,4 @@
-// generated by makecode.pl
+// generated from dbusclientinterface.h by makecode.pl
 #include "dbusclientinterface.h"
 #include "dbusmessagereader.h"
 #include "dbusmessagewriter.h"
--- trunk/playground/base/strigi/src/daemon/dbus/dbusmessagereader.cpp #579344:579345
@@ -10,16 +10,50 @@
     }
 }
 DBusMessageReader&
-DBusMessageReader::operator>>(int32_t s) {
+DBusMessageReader::operator>>(uint32_t& s) {
     if (!isOk()) return *this;
+    if (DBUS_TYPE_UINT32 != dbus_message_iter_get_arg_type(&it)) {
+        close();
+        return *this;
+    }
+    dbus_message_iter_get_basic(&it, &s);
+    dbus_message_iter_next(&it);
+    return *this;
+}
+DBusMessageReader&
+DBusMessageReader::operator>>(int32_t& s) {
+    if (!isOk()) return *this;
     if (DBUS_TYPE_INT32 != dbus_message_iter_get_arg_type(&it)) {
         close();
         return *this;
     }
     dbus_message_iter_get_basic(&it, &s);
+    dbus_message_iter_next(&it);
     return *this;
 }
 DBusMessageReader&
+DBusMessageReader::operator>>(uint64_t& s) {
+    if (!isOk()) return *this;
+    if (DBUS_TYPE_UINT64 != dbus_message_iter_get_arg_type(&it)) {
+        close();
+        return *this;
+    }
+    dbus_message_iter_get_basic(&it, &s);
+    dbus_message_iter_next(&it);
+    return *this;
+}
+DBusMessageReader&
+DBusMessageReader::operator>>(int64_t& s) {
+    if (!isOk()) return *this;
+    if (DBUS_TYPE_INT64 != dbus_message_iter_get_arg_type(&it)) {
+        close();
+        return *this;
+    }
+    dbus_message_iter_get_basic(&it, &s);
+    dbus_message_iter_next(&it);
+    return *this;
+}
+DBusMessageReader&
 DBusMessageReader::operator>>(std::string& s) {
     if (!isOk()) return *this;
     if (DBUS_TYPE_STRING != dbus_message_iter_get_arg_type(&it)) {
@@ -29,6 +63,7 @@
     const char* c;
     dbus_message_iter_get_basic(&it, &c);
     s.assign(c);
+    dbus_message_iter_next(&it);
     return *this;
 }
 DBusMessageReader&
@@ -48,6 +83,7 @@
         dbus_message_iter_get_basic(&sub, &value);
         s.insert(value);
     } while(dbus_message_iter_next(&sub));
+    dbus_message_iter_next(&it);
     
     return *this;
 }
@@ -65,7 +101,8 @@
     int length = dbus_message_iter_get_array_len(&sub);
     char* array;
     dbus_message_iter_get_fixed_array(&sub, &array, &length);
-//    s.assign(array, array+length);
+    s.assign(array, array+length);
+    dbus_message_iter_next(&it);
 
     return *this;
 }
--- trunk/playground/base/strigi/src/daemon/dbus/dbusmessagereader.h #579344:579345
@@ -29,7 +29,10 @@
     DBusMessageReader& operator>>(std::set<std::string>& s);
     DBusMessageReader& operator>>(std::vector<char>& s);
     DBusMessageReader& operator>>(std::string& s);
-    DBusMessageReader& operator>>(int32_t s);
+    DBusMessageReader& operator>>(uint32_t& s);
+    DBusMessageReader& operator>>(int32_t& s);
+    DBusMessageReader& operator>>(uint64_t& s);
+    DBusMessageReader& operator>>(int64_t& s);
     bool isOk() const { return ok; }
 };
 
--- trunk/playground/base/strigi/src/daemon/dbus/dbusmessagewriter.cpp #579344:579345
@@ -25,7 +25,6 @@
 }
 DBusMessageWriter&
 DBusMessageWriter::operator<<(bool b) {
-    printf("added bool\n");
     dbus_message_iter_append_basic(&it, DBUS_TYPE_BOOLEAN, &b);
     return *this;
 }
@@ -48,7 +47,6 @@
 DBusMessageWriter::operator<<(const std::string& s) {
     const char* c = s.c_str();
     dbus_message_iter_append_basic(&it, DBUS_TYPE_STRING, &c);
-    printf("hi\n");
     return *this;
 }
 DBusMessageWriter&
@@ -99,38 +97,40 @@
     DBusMessageIter sub;
     DBusMessageIter ssub;
     DBusMessageIter sssub;
+    DBusMessageIter ssssub;
     dbus_message_iter_open_container(&it, DBUS_TYPE_ARRAY,
-        "sdsssxxa{ss}", &sub);
+        "(sdsssxxa{ss})", &sub);
     vector<jstreams::IndexedDocument>::const_iterator i;
     for (i=s.hits.begin(); i!=s.hits.end(); ++i) {
+        dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, 0, &ssub);
         const char* c = i->uri.c_str();
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_STRING, &c);
         double d = i->score;
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_DOUBLE, &d);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_DOUBLE, &d);
         c = i->fragment.c_str();
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_STRING, &c);
         c = i->mimetype.c_str();
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_STRING, &c);
         c = i->sha1.c_str();
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &c);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_STRING, &c);
         int64_t n = i->size;
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT64, &n);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_INT64, &n);
         n = i->mtime;
-        dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT64, &n);
-        dbus_message_iter_open_container(&sub, DBUS_TYPE_ARRAY, "{ss}", &ssub);
+        dbus_message_iter_append_basic(&ssub, DBUS_TYPE_INT64, &n);
+        dbus_message_iter_open_container(&ssub, DBUS_TYPE_ARRAY, "{ss}",&sssub);
         map<string, string>::const_iterator j;
         for (j = i->properties.begin(); j != i->properties.end(); ++j) {
-            dbus_message_iter_open_container(&ssub, DBUS_TYPE_DICT_ENTRY, 0,
-                &sssub);
+            dbus_message_iter_open_container(&sssub, DBUS_TYPE_DICT_ENTRY, 0,
+                &ssssub);
             c = j->first.c_str();
-            dbus_message_iter_append_basic(&sssub, DBUS_TYPE_STRING, &c);
+            dbus_message_iter_append_basic(&ssssub, DBUS_TYPE_STRING, &c);
             c = j->second.c_str();
-            dbus_message_iter_append_basic(&sssub, DBUS_TYPE_STRING, &c);
-            dbus_message_iter_close_container(&ssub, &sssub);
+            dbus_message_iter_append_basic(&ssssub, DBUS_TYPE_STRING, &c);
+            dbus_message_iter_close_container(&sssub, &ssssub);
         }
+        dbus_message_iter_close_container(&ssub, &sssub);
         dbus_message_iter_close_container(&sub, &ssub);
     }
     dbus_message_iter_close_container(&it, &sub);
-    printf("%i results\n", s.hits.size());
     return *this;
 }
--- trunk/playground/base/strigi/src/daemon/dbus/dbusserver.h #579344:579345
@@ -28,7 +28,7 @@
     Interface* interface;
     void* run(void*);    
 public:
-    DBusServer(Interface* i) :interface(i) {}
+    DBusServer(Interface* i) :StrigiThread("DBusServer"), interface(i) {}
     ~DBusServer() {}
 /**
  * return true if the system stopped normally
--- trunk/playground/base/strigi/src/daemon/dbus/dbustestinterface.cpp #579344:579345
@@ -7,6 +7,7 @@
 DBusTestInterface::DBusTestInterface(TestInterface* i)
         :DBusObjectInterface("vandenoever.dbustest"), impl(i) {
     handlers["upload"] = &DBusTestInterface::upload;
+    handlers["concat"] = &DBusTestInterface::concat;
     handlers["helloWorld"] = &DBusTestInterface::helloWorld;
     handlers["giveMap"] = &DBusTestInterface::giveMap;
 }
@@ -30,6 +31,11 @@
     << "      <arg name='upload' type='ay' direction='in'/>\n"
     << "      <arg name='out' type='b' direction='out'/>\n"
     << "    </method>\n"
+    << "    <method name='concat'>\n"
+    << "      <arg name='a' type='s' direction='in'/>\n"
+    << "      <arg name='b' type='s' direction='in'/>\n"
+    << "      <arg name='out' type='s' direction='out'/>\n"
+    << "    </method>\n"
     << "    <method name='helloWorld'>\n"
     << "      <arg name='name' type='s' direction='in'/>\n"
     << "      <arg name='out' type='s' direction='out'/>\n"
@@ -51,6 +57,17 @@
     }
 }
 void
+DBusTestInterface::concat(DBusMessage* msg, DBusConnection* conn) {
+    DBusMessageReader reader(msg);
+    DBusMessageWriter writer(conn, msg);
+    std::string a;
+    std::string b;
+    reader >> a >> b;
+    if (reader.isOk()) {
+        writer << impl->concat(a,b);
+    }
+}
+void
 DBusTestInterface::helloWorld(DBusMessage* msg, DBusConnection* conn) {
     DBusMessageReader reader(msg);
     DBusMessageWriter writer(conn, msg);
--- trunk/playground/base/strigi/src/daemon/dbus/dbustestinterface.h #579344:579345
@@ -12,6 +12,7 @@
     std::map<std::string, handlerFunction> handlers;
     DBusHandlerResult handleCall(DBusConnection* connection, DBusMessage* msg);
     void upload(DBusMessage* msg, DBusConnection* conn);
+    void concat(DBusMessage* msg, DBusConnection* conn);
     void helloWorld(DBusMessage* msg, DBusConnection* conn);
     void giveMap(DBusMessage* msg, DBusConnection* conn);
 public:
--- trunk/playground/base/strigi/src/daemon/dbus/testinterface.cpp #579344:579345
@@ -5,6 +5,10 @@
 TestInterface::helloWorld(const std::string& name) {
     return "Hello "+name;
 }
+std::string
+TestInterface::concat(const std::string& a, const std::string& b) {
+    return a+b;
+}
 bool
 TestInterface::upload(const std::vector<char>& upload) {
     printf("got file of size %i uploaded\n", upload.size());
--- trunk/playground/base/strigi/src/daemon/dbus/testinterface.h #579344:579345
@@ -9,6 +9,7 @@
 public:
     TestInterface() {}
     std::string helloWorld(const std::string& name);
+    std::string concat(const std::string& a, const std::string& b);
     bool upload(const std::vector<char>& upload);
     std::map<std::string, std::string> giveMap();
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic