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);
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);
}
}
+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;
g_hash_table_remove(service_hash, service->identifier);
+ __connman_notifier_service_remove(service);
+
stats_stop(service);
__connman_storage_save_service(service);
__connman_service_auto_connect();
}
+ __connman_notifier_service_add(service);
+
return service;
}
service_register(service);
+ __connman_notifier_service_add(service);
+
return service;
}