Skip to content

Commit

Permalink
Check why one cannot create get a name in a remote dbus
Browse files Browse the repository at this point in the history
  • Loading branch information
mnarusze committed Sep 26, 2012
1 parent c6ba807 commit 6652098
Show file tree
Hide file tree
Showing 7 changed files with 301 additions and 226 deletions.
40 changes: 20 additions & 20 deletions autom4te.cache/requests
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@
'AM_SET_LEADING_DOT' => 1,
'AM_SET_DEPDIR' => 1,
'_AM_DEPENDENCIES' => 1,
'AM_PROG_INSTALL_SH' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'm4_include' => 1,
'PKG_PROG_PKG_CONFIG' => 1,
'AM_PROG_INSTALL_SH' => 1,
'PKG_CHECK_MODULES' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AU_DEFUN' => 1,
Expand All @@ -88,55 +88,55 @@
'configure.ac'
],
{
'_LT_AC_TAGCONFIG' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_INIT' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
'_AM_COND_IF' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
'AC_SUBST' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FC_SRCEXT' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AM_PATH_GUILE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_PATH_GUILE' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'LT_SUPPORTED_TAG' => 1,
'm4_sinclude' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_NLS' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'_m4_warn' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_PROG_CXX_C_O' => 1,
'_AM_COND_ENDIF' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'_AM_COND_ENDIF' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_SILENT_RULES' => 1,
'AM_PROG_MOC' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'LT_INIT' => 1,
'AM_PROG_AR' => 1,
'include' => 1,
'AM_GNU_GETTEXT' => 1,
'AM_PROG_AR' => 1,
'AC_LIBSOURCE' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_CANONICAL_BUILD' => 1,
'AM_PROG_FC_C_O' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
'AM_PROG_CC_C_O' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'm4_pattern_allow' => 1,
'AM_XGETTEXT_OPTION' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_PROG_CC_C_O' => 1,
'sinclude' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_XGETTEXT_OPTION' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AM_POT_TOOLS' => 1,
Expand Down
4 changes: 2 additions & 2 deletions data/org.ksr.chat.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<node>
<interface name="org.ksr.chat.signals">
<interface name="org.ksr.chat.user">
<signal name="message">
<arg name="nick" type="s" direction="out"/>
<arg name="content" type="s" direction="out"/>
</signal>
<signal name="action">
<arg name="nick" type="s" direction="out"/>
<arg name="text" type="s" direction="out"/>
<arg name="action_type" type="s" direction="out"/>
</signal>
</interface>
</node>
20 changes: 14 additions & 6 deletions src/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
bin_PROGRAMS = ksr_chat
bin_PROGRAMS = ksr_chat_server ksr_chat_client

AM_CFLAGS = \
$(GLIB_CFLAGS) \
$(GIO_CFLAGS)

ksr_chat_SOURCES = \
$(dbus_built_sources) \
main.c
ksr_chat_server_SOURCES = \
$(dbus_built_sources) \
main-server.c

ksr_chat_LDADD = \
$(GLIB_LIBS) \
ksr_chat_client_SOURCES = \
$(dbus_built_sources) \
main-client.c

ksr_chat_client_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS)

ksr_chat_server_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS)

dbus_built_sources = \
Expand Down
47 changes: 32 additions & 15 deletions src/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = ksr_chat$(EXEEXT)
bin_PROGRAMS = ksr_chat_server$(EXEEXT) ksr_chat_client$(EXEEXT)
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
Expand All @@ -63,10 +63,15 @@ CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am__objects_1 = chat-generated.$(OBJEXT)
am_ksr_chat_OBJECTS = $(am__objects_1) main.$(OBJEXT)
ksr_chat_OBJECTS = $(am_ksr_chat_OBJECTS)
am_ksr_chat_client_OBJECTS = $(am__objects_1) main-client.$(OBJEXT)
ksr_chat_client_OBJECTS = $(am_ksr_chat_client_OBJECTS)
am__DEPENDENCIES_1 =
ksr_chat_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
ksr_chat_client_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
am_ksr_chat_server_OBJECTS = $(am__objects_1) main-server.$(OBJEXT)
ksr_chat_server_OBJECTS = $(am_ksr_chat_server_OBJECTS)
ksr_chat_server_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
Expand All @@ -75,8 +80,8 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(ksr_chat_SOURCES)
DIST_SOURCES = $(ksr_chat_SOURCES)
SOURCES = $(ksr_chat_client_SOURCES) $(ksr_chat_server_SOURCES)
DIST_SOURCES = $(ksr_chat_client_SOURCES) $(ksr_chat_server_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
Expand Down Expand Up @@ -179,12 +184,20 @@ AM_CFLAGS = \
$(GLIB_CFLAGS) \
$(GIO_CFLAGS)

ksr_chat_SOURCES = \
$(dbus_built_sources) \
main.c
ksr_chat_server_SOURCES = \
$(dbus_built_sources) \
main-server.c

ksr_chat_LDADD = \
$(GLIB_LIBS) \
ksr_chat_client_SOURCES = \
$(dbus_built_sources) \
main-client.c

ksr_chat_client_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS)

ksr_chat_server_LDADD = \
$(GLIB_LIBS) \
$(GIO_LIBS)

dbus_built_sources = \
Expand Down Expand Up @@ -265,9 +278,12 @@ uninstall-binPROGRAMS:

clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
ksr_chat$(EXEEXT): $(ksr_chat_OBJECTS) $(ksr_chat_DEPENDENCIES) $(EXTRA_ksr_chat_DEPENDENCIES)
@rm -f ksr_chat$(EXEEXT)
$(LINK) $(ksr_chat_OBJECTS) $(ksr_chat_LDADD) $(LIBS)
ksr_chat_client$(EXEEXT): $(ksr_chat_client_OBJECTS) $(ksr_chat_client_DEPENDENCIES) $(EXTRA_ksr_chat_client_DEPENDENCIES)
@rm -f ksr_chat_client$(EXEEXT)
$(LINK) $(ksr_chat_client_OBJECTS) $(ksr_chat_client_LDADD) $(LIBS)
ksr_chat_server$(EXEEXT): $(ksr_chat_server_OBJECTS) $(ksr_chat_server_DEPENDENCIES) $(EXTRA_ksr_chat_server_DEPENDENCIES)
@rm -f ksr_chat_server$(EXEEXT)
$(LINK) $(ksr_chat_server_OBJECTS) $(ksr_chat_server_LDADD) $(LIBS)

mostlyclean-compile:
-rm -f *.$(OBJEXT)
Expand All @@ -276,7 +292,8 @@ distclean-compile:
-rm -f *.tab.c

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chat-generated.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main-client.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main-server.Po@am__quote@

.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
Expand Down
134 changes: 134 additions & 0 deletions src/main-client.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
#include <gio/gio.h>
#include "chat-generated.h"

static gchar *opt_name = NULL;
static gchar *opt_address = NULL;

static GOptionEntry opt_entries[] =
{
{ "name", 'n', 0, G_OPTION_ARG_STRING, &opt_name, "Client's name", NULL },
{ "address", 'a', 0, G_OPTION_ARG_STRING, &opt_address, "Address of the DBus", NULL },
{ NULL }
};

static gboolean
input_is_valid ()
{
if (opt_name == NULL || opt_address == NULL)
{
g_printerr ("Incorrect usage, use \"ksr-chat-client --help\" for help.\n");
return 0;
}
return 1;
}

static void
on_bus_acquired (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
/* This is where we'd export some objects on the bus */
}

static void
on_name_acquired (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
g_print ("Acquired the name %s on the session bus\n", name);
}

static void
on_name_lost (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
g_print ("Lost the name %s on the session bus\n", name);
}

int
main (int argc, char *argv[])
{
GOptionContext *opt_context;
GError *error;
GMainLoop *loop;
GDBusConnection *connection;
GDBusConnectionFlags connection_flags;
GBusNameOwnerFlags name_owner_flags;

gint ret;
gchar *object_path;
guint owner_id;

ret = 1;
g_type_init ();
error = NULL;

opt_context = g_option_context_new ("ksr-chat-client() usage:");
g_option_context_set_summary (opt_context,
"To connect to server under address as \"nickname\" and start chatting, use:\n"
" \"ksr-chat -n nickname -a address");
g_option_context_add_main_entries (opt_context, opt_entries, NULL);

if (!g_option_context_parse (opt_context, &argc, &argv, &error))
{
g_printerr ("Error parsing options: %s\n", error->message);
g_error_free (error);
goto out;
}

if (!input_is_valid())
goto out;

object_path = g_strdup_printf("org.ksr.chat.%s", opt_name);
connection_flags = G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT;

g_printf ("Connecting to bus under %s...\n",opt_address);
connection = g_dbus_connection_new_for_address_sync(opt_address,
connection_flags,
NULL,
NULL,
error);

if (connection == NULL)
{
g_printerr ("Error connecting to the DBus : %s\n", error->message);
goto out;
}

g_printf ("Connected to the DBus! Connecting to the chat...\n");

name_owner_flags = G_BUS_NAME_OWNER_FLAGS_NONE;
owner_id = g_bus_own_name_on_connection(connection,
object_path,
name_owner_flags,
on_name_acquired,
on_name_lost,
error,
NULL);

if (owner_id == NULL)
goto out;

loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);

/*
* Cleanup
*/
if (g_dbus_connection_close_sync(connection,NULL,error))
g_printf ("Closed connection successfully!\n");
else
g_printerr ("Error closing the connection : %s\n", error->message);

g_bus_unown_name (owner_id);
g_main_loop_unref (loop);
g_free(object_path);

ret = 0;

out:

g_option_context_free (opt_context);
return ret;
}
Loading

0 comments on commit 6652098

Please sign in to comment.