From: Marcel Holtmann <marcel@holtmann.org>
To: ofono@ofono.org
Subject: Re: [PATCHv5] plugin: Add ste modem initd integration
Date: Mon, 10 Jan 2011 16:58:02 -0800 [thread overview]
Message-ID: <1294707482.3873.17.camel@aeonflux> (raw)
In-Reply-To: <1294306682-7309-1-git-send-email-sjurbren@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3265 bytes --]
Hi Sjur,
> +static void get_modems()
> +{
so these are declared as get_modems(void) btw. The compiler should have
warned you about this.
> + DBusMessage *message;
> + DBusPendingCall *call;
> +
> + message = dbus_message_new_method_call(MGR_SERVICE, "/",
> + MGR_INTERFACE, MGR_GET_MODEMS);
> + if (message == NULL) {
> + ofono_error("Unable to allocate new D-Bus message");
> + goto error;
> + }
> +
> + dbus_message_set_auto_start(message, FALSE);
> +
> + if (!dbus_connection_send_with_reply(connection, message, &call,
> + GET_MODEMS_TIMEOUT)) {
> + ofono_error("Sending D-Bus message failed");
> + goto error;
> + }
> +
> + if (call == NULL) {
> + DBG("D-Bus connection not available");
> + goto error;
> + }
> +
> + dbus_pending_call_set_notify(call, get_modems_reply, NULL, NULL);
> + dbus_pending_call_unref(call);
> +
> +error:
> + dbus_message_unref(message);
> +}
> +
> +static gboolean property_changed(DBusConnection *connection,
> + DBusMessage *message, void *user_data)
> +{
> + DBusMessageIter iter;
> + struct ste_modem *stemodem;
> + const char *key;
> + enum ste_operation operation;
> + gboolean operation_valid;
> +
> + stemodem = g_hash_table_lookup(modem_list,
> + dbus_message_get_path(message));
> +
> + if (stemodem == NULL)
> + return TRUE;
> +
> +
> + if (!dbus_message_iter_init(message, &iter))
> + return TRUE;
> +
> + dbus_message_iter_get_basic(&iter, &key);
> + dbus_message_iter_next(&iter);
> +
> + update_property(stemodem, key, &iter, &operation, &operation_valid);
> +
> + if (operation_valid)
> + state_change(stemodem, operation);
> +
> + return TRUE;
> +}
> +
> +static void mgr_connect(DBusConnection *connection, void *user_data)
> +{
> + property_changed_watch = g_dbus_add_signal_watch(connection, NULL,
> + NULL,
> + MGR_MODEM_INTERFACE,
> + PROPERTY_CHANGED,
> + property_changed,
> + NULL, NULL);
> + get_modems();
> +}
> +
> +static void mgr_disconnect(DBusConnection *connection, void *user_data)
> +{
> + g_hash_table_remove_all(modem_list);
> + g_dbus_remove_watch(connection, property_changed_watch);
> +}
> +
> +static void destroy_stemodem(gpointer data)
> +{
> + struct ste_modem *stemodem = data;
> +
> + ofono_modem_remove(stemodem->modem);
I would add an extra empty line for pure visual sake here.
> + g_free(stemodem->interface);
> + g_free(stemodem->path);
> + g_free(stemodem->serial);
> + g_free(stemodem);
> +}
> +
> +static int stemgr_init()
> +{
> + connection = ofono_dbus_get_connection();
> +
> + modem_list = g_hash_table_new_full(g_str_hash, g_str_equal,
> + NULL, destroy_stemodem);
> + modem_daemon_watch = g_dbus_add_service_watch(connection, MGR_SERVICE,
> + mgr_connect, mgr_disconnect, NULL, NULL);
> + return 0;
> +}
> +
> +static void stemgr_exit()
> +{
> + g_hash_table_destroy(modem_list);
> + g_dbus_remove_watch(connection, modem_daemon_watch);
> + g_dbus_remove_watch(connection, property_changed_watch);
This is not right. You need to remove the property_changed_watch in the
disconnect callback. Otherwise if your daemon restarts twice you
actually have two watches.
Regards
Marcel
next prev parent reply other threads:[~2011-01-11 0:58 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-15 21:49 [PATCHv2] plugin: Add ste modem initd integration Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2010-12-15 21:49 ` [PATCHv2 1/2] stemodem: Create network interfaces statically Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2010-12-21 14:38 ` Marcel Holtmann
2010-12-15 21:49 ` [PATCHv2 2/2] stemodem: Use RTNL to create network interfaces Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2010-12-21 14:38 ` Marcel Holtmann
2010-12-21 14:36 ` [PATCHv2] plugin: Add ste modem initd integration Marcel Holtmann
2010-12-21 15:06 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2010-12-21 15:18 ` Marcel Holtmann
2010-12-21 15:37 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2010-12-23 2:48 ` Marcel Holtmann
2011-01-03 21:42 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-03 21:55 ` Marcel Holtmann
2011-01-03 22:30 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-03 22:54 ` Marcel Holtmann
2011-01-03 23:12 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-04 9:49 ` Marcel Holtmann
2011-01-04 19:07 ` [PATCHv4 0/1] STE Modem Init Daemon integration Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-04 19:07 ` [PATCHv4 1/1] plugin: Add ste modem initd integration Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-05 22:06 ` Marcel Holtmann
2011-01-06 9:38 ` [PATCHv5] " Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 0:58 ` Marcel Holtmann [this message]
2011-01-11 17:06 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 21:52 ` Marcel Holtmann
2011-01-11 21:56 ` Denis Kenzior
2011-01-11 22:05 ` Marcel Holtmann
2011-01-11 22:39 ` [PATCH] coding-style: Use void if function has no parameters Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 22:48 ` Marcel Holtmann
2011-01-11 22:24 ` [PATCHv6] plugin: Add ste modem initd integration Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 22:35 ` Marcel Holtmann
2011-01-11 22:41 ` Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 22:56 ` [PATCHv7] " Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
2011-01-11 22:58 ` Marcel Holtmann
2010-12-21 22:54 ` [PATCHv3] " Sjur =?unknown-8bit?q?Br=C3=A6ndeland?=
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1294707482.3873.17.camel@aeonflux \
--to=marcel@holtmann.org \
--cc=ofono@ofono.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.