diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2012-09-26 11:06:58 +0200 |
---|---|---|
committer | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2012-09-27 10:28:28 +0200 |
commit | 7698d6d8261b256ebe0d964672df3a71b882e26f (patch) | |
tree | b0b290cb898db3738df986aeb4521c1d6dad6132 /src | |
parent | b290553dc8bca423d971a3dd314057fe03fe2ada (diff) | |
download | connman-7698d6d8261b256ebe0d964672df3a71b882e26f.tar.gz connman-7698d6d8261b256ebe0d964672df3a71b882e26f.tar.bz2 connman-7698d6d8261b256ebe0d964672df3a71b882e26f.zip |
session: Remove global configuration plugin
Implement support for per session configuration plugin. Obviously,
this patch itsel is not complete. The code for assigning a
configuration plugin to session->config follows in the next patches.
Diffstat (limited to 'src')
-rw-r--r-- | src/session.c | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/src/session.c b/src/session.c index 1aef769a..d2055a29 100644 --- a/src/session.c +++ b/src/session.c @@ -36,7 +36,6 @@ static DBusConnection *connection; static GHashTable *session_hash; static connman_bool_t sessionmode; static struct connman_session *ecall_session; -static struct connman_session_policy *session_policy; enum connman_session_trigger { CONNMAN_SESSION_TRIGGER_UNKNOWN = 0, @@ -102,6 +101,8 @@ struct connman_session { char *notify_path; guint notify_watch; + struct connman_session_policy *policy; + connman_bool_t append_all; struct session_info *info; struct session_info *info_last; @@ -252,24 +253,26 @@ static char *service2bearer(enum connman_service_type type) return ""; } -static int policy_get_bool(const char *id, const char *key, connman_bool_t *val) +static int policy_get_bool(struct connman_session *session, const char *id, + const char *key, connman_bool_t *val) { - if (session_policy == NULL) { + if (session->policy == NULL) { *val = FALSE; return -EINVAL; } - return (*session_policy->get_bool)(id, key, val); + return (*session->policy->get_bool)(id, key, val); } -static int policy_get_string(const char *id, const char *key, char **val) +static int policy_get_string(struct connman_session *session, const char *id, + const char *key, char **val) { - if (session_policy == NULL) { + if (session->policy == NULL) { *val = NULL; return -EINVAL; } - return (*session_policy->get_string)(id, key, val); + return (*session->policy->get_string)(id, key, val); } static struct connman_session *session_lookup_by_id(const char *id) @@ -338,30 +341,12 @@ int connman_session_policy_register(struct connman_session_policy *policy) { DBG("name %s", policy->name); - if (session_policy != NULL) { - connman_warn("A session policy plugin '%s' is " - "already registerd. Skipping registration " - "of plugin '%s'", - session_policy->name, policy->name); - return -EALREADY; - } - - session_policy = policy; - return 0; } void connman_session_policy_unregister(struct connman_session_policy *policy) { DBG("name %s", policy->name); - - if (policy != session_policy) { - connman_warn("Trying to unregister session policy " - "plugin '%s'", policy->name); - return; - } - - session_policy = NULL; } static void cleanup_bearer_info(gpointer data, gpointer user_data) @@ -1578,9 +1563,9 @@ int __connman_session_create(DBusMessage *msg) info = session->info; info_last = session->info_last; - policy_get_bool(owner, "Priority", &priority); - policy_get_bool(owner, "EmergencyCall", &ecall_app); - policy_get_string(owner, "RoamingPolicy", &roaming_policy_str); + policy_get_bool(session, owner, "Priority", &priority); + policy_get_bool(session, owner, "EmergencyCall", &ecall_app); + policy_get_string(session, owner, "RoamingPolicy", &roaming_policy_str); roaming_policy = string2roamingpolicy(roaming_policy_str); session->owner = g_strdup(owner); |