static void*
no_bus_init_server (ServerData       *sd)
{
  DBusServer *server;
  DBusError error;

  dbus_error_init (&error);
  server = dbus_server_listen ("unix:tmpdir="DBUS_TEST_SOCKET_DIR,
                               &error);
  if (server == NULL)
    {
      g_printerr ("Could not start server: %s\n",
                  error.message);
      exit (1);
    }

  messages_address = dbus_server_get_address (server);
  
  dbus_server_set_new_connection_function (server,
                                           no_bus_new_connection_callback,
                                           sd, NULL);

  dbus_server_setup_with_g_main (server, NULL);
  
  return server;
}
static dbus_bool_t
dbus_py_glib_set_up_srv(DBusServer *srv, void *data)
{
    GMainContext *ctx = (GMainContext *)data;
    Py_BEGIN_ALLOW_THREADS
    dbus_server_setup_with_g_main(srv, ctx);
    Py_END_ALLOW_THREADS
    return 1;
}
Exemple #3
0
int
main(int argc, char *argv[])
{
    librdf_world* world;
    GMainLoop *loop;
    DBusServer *server;
    DBusError error;
    char *program=argv[0];

    if (argc < 2) {
        fprintf (stderr, "%s: USAGE [server address]\n", program);
        return 1;
    }

    world=librdf_new_world();
    librdf_world_open(world);

    g_thread_init (NULL);
    dbus_gthread_init ();

    dbus_error_init (&error);
    server = dbus_server_listen (argv[1], &error);
    if (server == NULL)
    {
        fprintf (stderr, "Failed to start server on %s: %s\n",
                 argv[1], error.message);
        dbus_error_free (&error);
        return 1;
    }

    if (!dbus_connection_allocate_data_slot (&handler_slot))
        g_error ("no memory for data slot");

    disconnect_handler =
        dbus_message_handler_new (handle_disconnect, NULL, NULL);
    if (disconnect_handler == NULL)
        g_error ("no memory for handler");

    dbus_server_set_new_connection_function (server,
            new_connection_callback,
            NULL, NULL);

    dbus_server_setup_with_g_main (server, NULL);

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

    librdf_free_world(world);

#ifdef LIBRDF_MEMORY_DEBUG
    librdf_memory_report(stderr);
#endif

    /* keep gcc -Wall happy */

    return 0;
}
int
main (int argc, char *argv[])
{
    GMainLoop *loop;
    DBusServer *server;
    DBusError error;

    g_thread_init (NULL);
    dbus_g_thread_init ();

    if (argc < 2)
    {
        fprintf (stderr, "Give the server address as an argument\n");
        return 1;
    }

    dbus_error_init (&error);
#ifndef __SYMBIAN32__
    server = dbus_server_listen (argv[1], &error);
#else
    server = dbus_server_listen ("tcp:host=localhost,port=12435", &error);
#endif
    if (server == NULL)
    {
        fprintf (stderr, "Failed to start server on %s: %s\n",
                 argv[1], error.message);
        dbus_error_free (&error);
        return 1;
    }

    dbus_server_set_new_connection_function (server,
            new_connection_callback,
            NULL, NULL);

    dbus_server_setup_with_g_main (server, NULL);

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

    return 0;
}
Exemple #5
0
gboolean
hald_runner_start_runner(void)
{
  DBusServer *server = NULL;
  DBusError err;
  GError *error = NULL;
  GPid pid;
  char *argv[] = { NULL, NULL};
  char *env[] =  { NULL, NULL, NULL, NULL};
  const char *hald_runner_path;
  char *server_addr;

  running_processes = g_hash_table_new (g_direct_hash, g_direct_equal);

  dbus_error_init(&err);
  server = dbus_server_listen(DBUS_SERVER_ADDRESS, &err);
  if (server == NULL) {
    HAL_ERROR (("Cannot create D-BUS server for the runner"));
    goto error;
  }

  dbus_server_setup_with_g_main(server, NULL);
  dbus_server_set_new_connection_function(server, handle_connection, 
                                          NULL, NULL);


  argv[0] = "hald-runner";
  server_addr = dbus_server_get_address (server);
  env[0] = g_strdup_printf("HALD_RUNNER_DBUS_ADDRESS=%s", server_addr);
  dbus_free (server_addr);
  hald_runner_path = g_getenv("HALD_RUNNER_PATH");
  if (hald_runner_path != NULL) {
	  env[1] = g_strdup_printf ("PATH=%s:" PACKAGE_LIBEXEC_DIR ":" PACKAGE_SCRIPT_DIR ":" PACKAGE_BIN_DIR, hald_runner_path);
  } else {
	  env[1] = g_strdup_printf ("PATH=" PACKAGE_LIBEXEC_DIR ":" PACKAGE_SCRIPT_DIR ":" PACKAGE_BIN_DIR);
  }

  /*env[2] = "DBUS_VERBOSE=1";*/
  
  
  if (!g_spawn_async(NULL, argv, env, G_SPAWN_DO_NOT_REAP_CHILD|G_SPAWN_SEARCH_PATH, 
        NULL, NULL, &pid, &error)) {
    HAL_ERROR (("Could not spawn runner : '%s'", error->message));
    g_error_free (error);
    goto error;
  }
  g_free(env[0]);
  g_free(env[1]);

  HAL_INFO (("Runner has pid %d", pid));

  g_child_watch_add(pid, runner_died, NULL);
  while (runner_connection == NULL) {
    /* Wait for the runner */
    g_main_context_iteration(NULL, TRUE);
  }
  return TRUE;

error:
  if (server != NULL)
    dbus_server_unref(server);
  return FALSE;
}
Exemple #6
0
int
main (int   argc,
      char**argv)
{
  DBusServer* server;
  GMainLoop * loop;
  DBusError   derror;
  guint16     port;
  GError    * error = NULL;
  gchar     * command;

  g_type_init ();

  dbus_error_init (&derror);
  server = dbus_server_listen("tcp:bind=*", &derror);
  if (dbus_error_is_set (&derror))
    {
      g_warning ("error setting up peer-to-peer server: %s",
                 derror.message);
      dbus_error_free (&derror);
      return 1;
    }

  dbus_server_set_new_connection_function(server, &new_connection_cb,
                                          NULL, NULL);
  port = my_dbus_server_get_port (server);

  command = g_strdup_printf ("./client %s %d",
                             "localhost",
                             port);
  if (argc > 1)
    {
      g_print ("starting \"%s\" twice:\n", command);
      if (!g_spawn_command_line_async (command, &error))
        {
          g_warning ("error spawning child: %s",
                     error->message);
          g_clear_error (&error);
          return 1;
        }
      if (!g_spawn_command_line_async (command, &error))
        {
          g_warning ("error spawning child: %s",
                     error->message);
          g_clear_error (&error);
          return 1;
        }
    }
  else
    {
      g_print ("start the clients like this: \"%s\" (replace \"localhost\" with the IP address)\n",
               command);
    }
  g_free (command);

  dbus_server_setup_with_g_main (server, NULL);

  loop = g_main_loop_new (NULL, FALSE);
  g_timeout_add (argc > 1 ? 1000 : 60 * 1000, (GSourceFunc)g_main_loop_quit, loop);
  g_main_loop_run (loop);
  g_main_loop_unref (loop);

  dbus_server_unref (server);

  return 0;
}
Exemple #7
0
static int server_init(LassiServer *ls) {
    DBusError e;
    int r = -1;
    guint16 port;

    g_assert(ls);

    memset(ls, 0, sizeof(*ls));

    dbus_error_init(&e);

    for (port = PORT_MIN; port < PORT_MAX; port++) {
        char *t;

        t = g_strdup_printf("tcp:port=%u,host=0.0.0.0", port);
        ls->dbus_server = dbus_server_listen(t, &e);
        g_free(t);

        if (ls->dbus_server) {
            ls->port = port;
            break;
        }

        if (!dbus_error_has_name(&e, DBUS_ERROR_ADDRESS_IN_USE)) {
            g_warning("Failed to create D-Bus server: %s %s", e.message, e.name);
            goto finish;
        }

        dbus_error_free(&e);
    }

    if (!ls->dbus_server) {
        g_warning("All ports blocked.");
        goto finish;
    }

    g_debug("Listening on port %u", port);

    dbus_server_setup_with_g_main(ls->dbus_server, NULL);
    dbus_server_set_new_connection_function(ls->dbus_server, new_connection, ls, NULL);

    ls->connections_by_id = g_hash_table_new(g_str_hash, g_str_equal);

    ls->id = g_strdup_printf(_("%s's desktop on %s"), g_get_user_name(), g_get_host_name());

    if (lassi_avahi_init(&ls->avahi_info, ls) < 0)
        goto finish;

    /* The initialization of Avahi might have changed ls->id! */

    ls->address = dbus_server_get_address(ls->dbus_server);
    ls->order = g_list_prepend(NULL, g_strdup(ls->id));

    if (lassi_grab_init(&ls->grab_info, ls) < 0)
        goto finish;

    if (lassi_osd_init(&ls->osd_info) < 0)
        goto finish;

    if (lassi_tray_init(&ls->tray_info, ls) < 0)
        goto finish;

    if (lassi_clipboard_init(&ls->clipboard_info, ls) < 0)
        goto finish;

    if (lassi_prefs_init(&ls->prefs_info, ls) < 0)
        goto finish;

    r = 0;

finish:
    dbus_error_free(&e);
    return r;
}
int
main (int argc, char **argv)
{
	ServiceData svc = {0,};
	DBusError dbus_error = {0,};
	const char *address = NULL;

#ifdef ENABLE_NLS
	/* initialize i18n */
	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
	textdomain (GETTEXT_PACKAGE);
#endif
	g_type_init ();
	gst_init (NULL, NULL);
	g_set_prgname ("rhythmbox-metadata");

	if (argv[1] != NULL && strcmp(argv[1], "--debug") == 0) {
		argv++;
		rb_debug_init (TRUE);
	} else if (argv[1] != NULL && strcmp (argv[1], "--debug-match") == 0) {
		rb_debug_init_match (argv[2]);
		argv += 2;
	} else {
		rb_debug_init (FALSE);
	}

	/* bug report modes */
	if (argv[1] != NULL && strcmp(argv[1], "--load") == 0) {
		return test_load (argv[2]);
	}
	if (argv[1] != NULL && strcmp(argv[1], "--saveable-types") == 0) {
		return test_saveable_types ();
	}

	if (argv[1] != NULL && strcmp (argv[1], "--external") == 0) {
		argv++;
		svc.external = TRUE;
	}
	if (argv[1] == NULL) {
		address = "unix:tmpdir=/tmp";
	} else {
		address = argv[1];
	}

	rb_debug ("initializing metadata service; pid = %d; address = %s", getpid (), address);
	svc.metadata = rb_metadata_new ();

	/* set up D-BUS server */
	svc.server = dbus_server_listen (address, &dbus_error);
	if (!svc.server) {
		rb_debug ("D-BUS server init failed: %s", dbus_error.message);
		return -1;
	}

	dbus_server_set_new_connection_function (svc.server,
						 _new_connection,
						 (gpointer) &svc,
						 NULL);

	/* write the server address back to the parent process */
	{
		char *addr;
		addr = dbus_server_get_address (svc.server);
		rb_debug ("D-BUS server listening on address %s", addr);
		printf ("%s\n", addr);
		fflush (stdout);
		free (addr);
	}

	/* run main loop until we get bored */
	svc.loop = g_main_loop_new (NULL, TRUE);
	dbus_server_setup_with_g_main (svc.server,
				       g_main_loop_get_context (svc.loop));

	if (!svc.external)
		g_timeout_add_seconds (ATTENTION_SPAN / 2, (GSourceFunc) electromagnetic_shotgun, &svc);

	g_main_loop_run (svc.loop);

	if (svc.connection) {
		dbus_connection_close (svc.connection);
		dbus_connection_unref (svc.connection);
	}

	g_object_unref (svc.metadata);
	g_main_loop_unref (svc.loop);

	dbus_server_disconnect (svc.server);
	dbus_server_unref (svc.server);
	gst_deinit ();

	return 0;
}