diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-04-12 08:53:35 +0200 |
---|---|---|
committer | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-04-12 15:27:43 +0200 |
commit | a4fa4668d6b2437817c23e7283a89a7ac1ac7f21 (patch) | |
tree | 84f102a32b0ae52fe8f91109e848ca5444b436be | |
parent | 8d222f87ce097abf1591e54bf93bb3466920804c (diff) | |
download | connman-a4fa4668d6b2437817c23e7283a89a7ac1ac7f21.tar.gz connman-a4fa4668d6b2437817c23e7283a89a7ac1ac7f21.tar.bz2 connman-a4fa4668d6b2437817c23e7283a89a7ac1ac7f21.zip |
notify: Add service_add()/remove()
-rw-r--r-- | include/notifier.h | 2 | ||||
-rw-r--r-- | src/connman.h | 2 | ||||
-rw-r--r-- | src/notifier.c | 24 | ||||
-rw-r--r-- | src/service.c | 6 |
4 files changed, 34 insertions, 0 deletions
diff --git a/include/notifier.h b/include/notifier.h index 5efae71b..7ac7c991 100644 --- a/include/notifier.h +++ b/include/notifier.h @@ -43,6 +43,8 @@ struct connman_notifier { const char *name; int priority; void (*default_changed) (struct connman_service *service); + void (*service_add) (struct connman_service *service); + void (*service_remove) (struct connman_service *service); void (*service_enabled) (enum connman_service_type type, connman_bool_t enabled); void (*offline_mode) (connman_bool_t enabled); diff --git a/src/connman.h b/src/connman.h index ac56ef22..8adf9096 100644 --- a/src/connman.h +++ b/src/connman.h @@ -596,6 +596,8 @@ void __connman_notifier_list_connected(DBusMessageIter *iter, void *user_data); void __connman_notifier_register(enum connman_service_type type); void __connman_notifier_unregister(enum connman_service_type type); +void __connman_notifier_service_add(struct connman_service *service); +void __connman_notifier_service_remove(struct connman_service *service); void __connman_notifier_enable(enum connman_service_type type); void __connman_notifier_disable(enum connman_service_type type); void __connman_notifier_connect(enum connman_service_type type); diff --git a/src/notifier.c b/src/notifier.c index 846546bc..27e53a1d 100644 --- a/src/notifier.c +++ b/src/notifier.c @@ -385,6 +385,30 @@ void __connman_notifier_default_changed(struct connman_service *service) } } +void __connman_notifier_service_add(struct connman_service *service) +{ + GSList *list; + + for (list = notifier_list; list; list = list->next) { + struct connman_notifier *notifier = list->data; + + if (notifier->service_add) + notifier->service_add(service); + } +} + +void __connman_notifier_service_remove(struct connman_service *service) +{ + GSList *list; + + for (list = notifier_list; list; list = list->next) { + struct connman_notifier *notifier = list->data; + + if (notifier->service_remove) + notifier->service_remove(service); + } +} + void __connman_notifier_proxy_changed(struct connman_service *service) { GSList *list; diff --git a/src/service.c b/src/service.c index f18cd33d..24996dad 100644 --- a/src/service.c +++ b/src/service.c @@ -2938,6 +2938,8 @@ static void service_free(gpointer user_data) g_hash_table_remove(service_hash, service->identifier); + __connman_notifier_service_remove(service); + stats_stop(service); __connman_storage_save_service(service); @@ -4857,6 +4859,8 @@ struct connman_service * __connman_service_create_from_network(struct connman_ne __connman_service_auto_connect(); } + __connman_notifier_service_add(service); + return service; } @@ -5017,6 +5021,8 @@ __connman_service_create_from_provider(struct connman_provider *provider) service_register(service); + __connman_notifier_service_add(service); + return service; } |