connman_bool_t __connman_service_is_idle(struct connman_service *service);
const char *__connman_service_get_name(struct connman_service *service);
+void __connman_service_session_inc(struct connman_service *service);
+connman_bool_t __connman_service_session_dec(struct connman_service *service);
+
#include <connman/location.h>
int __connman_location_init(void);
struct connman_service {
gint refcount;
+ gint session_usage_count;
char *identifier;
char *path;
enum connman_service_type type;
return service->name;
}
+void __connman_service_session_inc(struct connman_service *service)
+{
+ DBG("service %p", service);
+
+ g_atomic_int_inc(&service->session_usage_count);
+}
+
+connman_bool_t __connman_service_session_dec(struct connman_service *service)
+{
+ connman_bool_t in_use;
+
+ if (g_atomic_int_dec_and_test(&service->session_usage_count) == TRUE)
+ in_use = FALSE;
+ else
+ in_use = TRUE;
+
+ DBG("service %p last %d", service, in_use);
+
+ return in_use;
+}
+
static void append_properties(DBusMessageIter *dict, dbus_bool_t limited,
struct connman_service *service)
{
DBG("service %p", service);
service->refcount = 1;
+ service->session_usage_count = 0;
service->type = CONNMAN_SERVICE_TYPE_UNKNOWN;
service->mode = CONNMAN_SERVICE_MODE_UNKNOWN;