get hostnamed to show up on session bus, incomplete
authorkremlin <ian@kremlin.cc>
Fri, 30 May 2014 07:01:49 +0000 (02:01 -0500)
committerkremlin <ian@kremlin.cc>
Fri, 30 May 2014 07:01:49 +0000 (02:01 -0500)
src/.main.c.swp [new file with mode: 0644]
src/main.c
src/modules/hostnamed/.hostnamed.c.swp [new file with mode: 0644]
src/modules/hostnamed/hostnamed.c

diff --git a/src/.main.c.swp b/src/.main.c.swp
new file mode 100644 (file)
index 0000000..b812616
Binary files /dev/null and b/src/.main.c.swp differ
index 2ff00fddfad06945dcf15802bfa0ecf0ddc8b4a8..8ba890714434b4a2285953854ff04766f222aa10 100644 (file)
@@ -1,7 +1,13 @@
+#include <gio/gio.h>
 #include "modules/hostnamed/hostnamed.c"
 
 int main() {
+       GMainLoop *loop;
+       
        hostnamed_init();
-       for(;;) {}
+       
+       loop = g_main_loop_new(NULL, FALSE);
+       g_main_loop_run(loop);
+
        return 0;
 }
diff --git a/src/modules/hostnamed/.hostnamed.c.swp b/src/modules/hostnamed/.hostnamed.c.swp
new file mode 100644 (file)
index 0000000..d13e399
Binary files /dev/null and b/src/modules/hostnamed/.hostnamed.c.swp differ
index f3632f64a44db573d9e3bef07eec4e44f0ce7837..e01742c67173a1c803c1eb5b0de5e9d07b1b1be6 100644 (file)
 /* #include <glib-2.0/glib.h> */
 #include <gio/gio.h>
 
+/* testing, for now */
+static GDBusNodeInfo *spect_data = NULL;
+static const gchar spect_xml[] = 
+               "<node>"
+               " <interface name='org.freedesktop.DBus.Peer'>"
+               "  <method name='Ping'/>"
+               "  <method name='GetMachineId'>"
+               "   <arg type='s' name='machine_uuid' direction='out'/>"
+               "  </method>"
+               " </interface>"
+               " <interface name='org.freedesktop.DBus.Introspectable'>"
+               "  <method name='Introspect'>"
+               "   <arg name='data' type='s' direction='out'/>"
+               "  </method>"
+               " </interface>"
+               " <interface name='org.freedesktop.DBus.Properties'>"
+               "  <method name='Get'>"
+               "   <arg name='interface' direction='in' type='s'/>"
+               "   <arg name='property' direction='in' type='s'/>"
+               "   <arg name='value' direction='out' type='v'/>"
+               "  </method>"
+               "  <method name='GetAll'>"
+               "   <arg name='interface' direction='in' type='s'/>"
+               "   <arg name='properties' direction='out' type='a{sv}'/>"
+               "  </method>"
+               "  <method name='Set'>"
+               "   <arg name='interface' direction='in' type='s'/>"
+               "   <arg name='property' direction='in' type='s'/>"
+               "   <arg name='value' direction='in' type='v'/>"
+               "  </method>"
+               "  <signal name='PropertiesChanged'>"
+               "   <arg type='s' name='interface'/>"
+               "   <arg type='a{sv}' name='changed_properties'/>"
+               "   <arg type='as' name='invalidated_properties'/>"
+               "  </signal>"
+               " </interface>"
+               " <interface name='org.freedesktop.hostname1'>"
+               "  <property name='Hostname' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='false'/>"
+               "  </property>"
+               "  <property name='StaticHostname' type='s' access='read'>"
+               "  </property>"
+               "  <property name='PrettyHostname' type='s' access='read'>"
+               "  </property>"
+               "  <property name='IconName' type='s' access='read'>"
+               "  </property>"
+               "  <property name='Chassis' type='s' access='read'>"
+               "  </property>"
+               "  <property name='KernelName' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='const'/>"
+               "  </property>"
+               "  <property name='KernelRelease' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='const'/>"
+               "  </property>"
+               "  <property name='KernelVersion' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='const'/>"
+               "  </property>"
+               "  <property name='OperatingSystemPrettyName' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='const'/>"
+               "  </property>"
+               "  <property name='OperatingSystemCPEName' type='s' access='read'>"
+               "   <annotation name='org.freedesktop.DBus.Property.EmitsChangedSignal' value='const'/>"
+               "  </property>"
+               "  <method name='SetHostname'>"
+               "   <arg type='s' direction='in'/>"
+               "   <arg type='b' direction='in'/>"
+               "  </method>"
+               "  <method name='SetStaticHostname'>"
+               "   <arg type='s' direction='in'/>"
+               "   <arg type='b' direction='in'/>"
+               "  </method>"
+               "  <method name='SetPrettyHostname'>"
+               "   <arg type='s' direction='in'/>"
+               "   <arg type='b' direction='in'/>"
+               "  </method>"
+               "  <method name='SetIconName'>"
+               "   <arg type='s' direction='in'/>"
+               "   <arg type='b' direction='in'/>"
+               "  </method>"
+               "  <method name='SetChassis'>"
+               "   <arg type='s' direction='in'/>"
+               "   <arg type='b' direction='in'/>"
+               "  </method>"
+               " </interface>"
+               "</node>";
+
+static void handle_method_call() {}
+static GVariant * handle_get_property() {return NULL;}
+static gboolean handle_set_property() {return FALSE;}
+
+/* TODO: what's this guy do */
+static const GDBusInterfaceVTable interface_vtable =
+{
+  handle_method_call,
+  handle_get_property,
+  handle_set_property
+};
+
+
+
 static void on_bus_acquired(GDBusConnection *conn, const gchar *name, gpointer user_data) {
        g_print("got bus, name: %s\n", name);
+       
+       spect_data = g_dbus_node_info_new_for_xml(spect_xml, NULL);
+       guint reg_id;
 
-       /* g_print("at %p, data @ %p\n", (void*)conn, user_data); */
+       reg_id = g_dbus_connection_register_object (conn,
+                                                                                               "/org/freedesktop/hostname1",
+                                                                                               spect_data->interfaces[0], 
+                                                                                               &interface_vtable,
+                                                                                               NULL,
+                                                                                               NULL,
+                                                                                               NULL );
+       g_assert(reg_id > 0);
 }
 
 static void on_name_acquired(GDBusConnection *conn, const gchar *name, gpointer user_data) {
        g_print("got name %s\n", name);
-
-       /* g_print("at %p, data @ %p\n", (void*)conn, user_data); */
 }
 
 static void on_name_lost(GDBusConnection *conn, const gchar *name, gpointer user_data) {
        g_print("lost name %s\n", name);
-
-       /* g_print("at %p, data @ %p\n", (void*)conn, user_data); */
 }
 
 void hostnamed_init() {
+
        guint bus_descriptor;
        GError *err = NULL;
        
-       bus_descriptor = g_bus_own_name(G_BUS_TYPE_SYSTEM,
+       bus_descriptor = g_bus_own_name(G_BUS_TYPE_SESSION,
                                        (gchar *)"org.freedesktop.hostname1",
                                                    G_BUS_NAME_OWNER_FLAGS_NONE,
                                                    on_bus_acquired,
@@ -33,3 +140,4 @@ void hostnamed_init() {
                                                    NULL);
 }
 
+