1 //gcc -o server serwer.c -Wall -g -O0 `pkg-config --cflags --libs dbus-1`
11 #define DBUS_NAME "com.samsung.pingpong"
12 #define DBUS_PATH "/com/samsung/pingpong"
13 #define DBUS_IFACE "com.samsung.pingpong"
15 DBusConnection *dbus_conn;
16 DBusObjectPathVTable *dbus_vtable;
18 static DBusHandlerResult
19 handler_function(DBusConnection *conn, DBusMessage *msg, void *user_data)
24 dbus_error_init(&error);
28 if (!dbus_message_get_args ( msg,
34 fprintf(stderr, "Error - Invalid ping message!");
35 reply = dbus_message_new_error(msg, "com.misiek.pingpong.PingError","ping message corrupted");
37 //printf ("Received from client%s\n", ping);
38 reply = dbus_message_new_method_return(msg);
39 dbus_message_append_args (reply, DBUS_TYPE_STRING, &ping, DBUS_TYPE_INVALID);
41 dbus_connection_send(dbus_conn, reply, NULL);
42 dbus_message_unref(reply);
44 return DBUS_HANDLER_RESULT_HANDLED;
52 dbus_error_init(&error);
54 dbus_conn = dbus_bus_get_private(DBUS_BUS_SESSION,&error);
56 if(dbus_error_is_set(&error))
58 fprintf(stderr,"Error- could not initizalize dbus session: %s \n", error.message);
62 switch(flag = dbus_bus_request_name(dbus_conn, DBUS_NAME, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error))
64 case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
65 case DBUS_REQUEST_NAME_REPLY_IN_QUEUE:
66 //printf("serwer.c request_name flags %d\n",flag);
67 //printf("serwer.c Name registered as %s\n",DBUS_NAME);
70 printf("serwer.c Error - could not request name\n");
74 dbus_vtable = malloc(sizeof(DBusObjectPathVTable));
75 dbus_vtable->unregister_function = NULL;
77 dbus_vtable->message_function = handler_function;
79 if(!dbus_connection_register_object_path(dbus_conn,
84 printf("Error - could not register object path");
96 dbus_connection_close(dbus_conn);
103 main(int argc, char **argv)
106 if (init_dbus() < 0) {
107 fprintf(stderr, "serwer.c Error initializing dbus\n");
109 fprintf(stderr,"Waiting for clients\n");
111 while (dbus_connection_read_write(dbus_conn, -1)) {
112 while (dbus_connection_dispatch( dbus_conn) != DBUS_DISPATCH_COMPLETE){