From: Daniel Wagner <[email protected]>

Instead of using __connman_service_indicate_state directly use
__connman_service_ipconfig_indicate_state. This allows us to decouple
the events from the state machine transisions.

__connman_service_indicate_state() is changed to a private function.

Also remove __connman_service_set_ipconfig_ready(). Instead
use __connman_service_ipconfig_indicate_state().
---
 src/connection.c |    3 ++-
 src/connman.h    |    2 --
 src/location.c   |    2 +-
 src/network.c    |   41 +++++++++++++++++++++++++----------------
 src/provider.c   |    4 ++--
 src/service.c    |   51 +++++++++++++--------------------------------------
 6 files changed, 43 insertions(+), 60 deletions(-)

diff --git a/src/connection.c b/src/connection.c
index 10ef04a..49e6fd8 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -304,7 +304,8 @@ int __connman_connection_gateway_add(struct connman_service 
*service,
        __connman_service_nameserver_add_routes(service,
                                                new_gateway->ipv4_gateway);
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV4);
+       __connman_service_ipconfig_indicate_state(service, 
CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
 
        if (connman_service_get_type(service) == CONNMAN_SERVICE_TYPE_VPN) {
                new_gateway->vpn = TRUE;
diff --git a/src/connman.h b/src/connman.h
index c98093d..4f67b1b 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -490,8 +490,6 @@ int __connman_service_set_immutable(struct connman_service 
*service,
 
 void __connman_service_set_string(struct connman_service *service,
                                        const char *key, const char *value);
-int __connman_service_set_ipconfig_ready(struct connman_service *service,
-                                                                               
 enum connman_ipconfig_type type);
 int __connman_service_ipconfig_indicate_state(struct connman_service *service,
                                        enum connman_service_state state,
                                        enum connman_ipconfig_type type);
diff --git a/src/location.c b/src/location.c
index dece833..2afc640 100644
--- a/src/location.c
+++ b/src/location.c
@@ -192,7 +192,7 @@ void connman_location_report_result(struct connman_location 
*location,
                __connman_service_request_login(location->service);
                break;
        case CONNMAN_LOCATION_RESULT_ONLINE:
-               __connman_service_indicate_state(location->service,
+               __connman_service_ipconfig_indicate_state(location->service,
                                                CONNMAN_SERVICE_STATE_ONLINE,
                                                CONNMAN_IPCONFIG_TYPE_IPV4);
                break;
diff --git a/src/network.c b/src/network.c
index 209fae5..81d57aa 100644
--- a/src/network.c
+++ b/src/network.c
@@ -642,7 +642,7 @@ int connman_network_set_associating(struct connman_network 
*network,
                struct connman_service *service;
 
                service = __connman_service_lookup_from_network(network);
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_ASSOCIATION,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
        }
@@ -661,7 +661,7 @@ static void set_associate_error(struct connman_network 
*network)
 
        service = __connman_service_lookup_from_network(network);
 
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 }
@@ -674,7 +674,7 @@ static void set_configure_error(struct connman_network 
*network)
 
        service = __connman_service_lookup_from_network(network);
 
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 }
@@ -789,7 +789,7 @@ static void set_configuration(struct connman_network 
*network)
        connman_device_set_disconnected(network->device, FALSE);
 
        service = __connman_service_lookup_from_network(network);
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_CONFIGURATION,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 }
@@ -817,7 +817,8 @@ static void dhcp_success(struct connman_network *network)
        if (err < 0)
                goto err;
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV4);
+       __connman_service_ipconfig_indicate_state(service, 
CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
 
        return;
 
@@ -834,7 +835,7 @@ static void dhcp_failure(struct connman_network *network)
        if (service == NULL)
                return;
 
-       __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE,
+       __connman_service_ipconfig_indicate_state(service, 
CONNMAN_SERVICE_STATE_IDLE,
                                                CONNMAN_IPCONFIG_TYPE_IPV4);
 }
 
@@ -875,7 +876,9 @@ static int set_connected_fixed(struct connman_network 
*network)
        if (err < 0)
                goto err;
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV4);
+       __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
 
        return 0;
 
@@ -912,7 +915,9 @@ static void set_connected_manual(struct connman_network 
*network)
 
        connman_network_set_associating(network, FALSE);
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV4);
+       __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
 
        return;
 
@@ -982,7 +987,9 @@ static void autoconf_ipv6_set(struct connman_network 
*network)
 
        network->connecting = FALSE;
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV6);
+       __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV6);
 }
 
 static gboolean set_connected(gpointer user_data)
@@ -1060,21 +1067,21 @@ static gboolean set_connected(gpointer user_data)
 
                service = __connman_service_lookup_from_network(network);
 
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_DISCONNECT,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_DISCONNECT,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
                __connman_connection_gateway_remove(service);
 
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_IDLE,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_IDLE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
        }
@@ -1241,7 +1248,9 @@ static int manual_ipv4_set(struct connman_network 
*network,
 
        __connman_ipconfig_gateway_add(ipconfig);
 
-       __connman_service_set_ipconfig_ready(service, 
CONNMAN_IPCONFIG_TYPE_IPV4);
+       __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
 
        return 0;
 }
@@ -1275,11 +1284,11 @@ int __connman_network_clear_ipconfig(struct 
connman_network *network,
        }
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV6)
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_CONFIGURATION,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
        else if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_CONFIGURATION,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 
diff --git a/src/provider.c b/src/provider.c
index afbfeeb..9ef088d 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -179,10 +179,10 @@ static int provider_indicate_state(struct 
connman_provider *provider,
 {
        DBG("state %d", state);
 
-       __connman_service_indicate_state(provider->vpn_service, state,
+       __connman_service_ipconfig_indicate_state(provider->vpn_service, state,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 
-       return __connman_service_indicate_state(provider->vpn_service, state,
+       return __connman_service_ipconfig_indicate_state(provider->vpn_service, 
state,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 }
 
diff --git a/src/service.c b/src/service.c
index 2f1c39d..5d41cbb 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2637,10 +2637,10 @@ static gboolean connect_timeout(gpointer user_data)
        } else
                autoconnect = TRUE;
 
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
@@ -3394,33 +3394,7 @@ static void report_error_cb(struct connman_service 
*service,
        }
 }
 
-int __connman_service_set_ipconfig_ready(struct connman_service *service,
-                                                                               
 enum connman_ipconfig_type type)
-{
-       enum connman_service_state state;
-       int err = 0;
-
-       DBG("service %p (%s) type %d (%s)",
-               service, service ? service->identifier : NULL,
-               type, __connman_ipconfig_type2string(type));
-
-       if (service == NULL)
-               return -EINVAL;
-
-       state = combine_state(service->state_ipv4, service->state_ipv6);
-
-       if (state == CONNMAN_SERVICE_STATE_READY ||
-               state == CONNMAN_SERVICE_STATE_ONLINE) {
-               err = -EALREADY;
-       } else {
-               err = __connman_service_indicate_state(service,
-                                       CONNMAN_SERVICE_STATE_READY, type);
-       }
-
-       return err;
-}
-
-int __connman_service_indicate_state(struct connman_service *service,
+static int indicate_state(struct connman_service *service,
                                        enum connman_service_state new_state,
                                        enum connman_ipconfig_type type)
 {
@@ -3639,7 +3613,7 @@ int __connman_service_indicate_error(struct 
connman_service *service,
        if (service->error == CONNMAN_SERVICE_ERROR_INVALID_KEY)
                __connman_service_set_passphrase(service, NULL);
 
-       return __connman_service_indicate_state(service,
+       return __connman_service_ipconfig_indicate_state(service,
                                                CONNMAN_SERVICE_STATE_FAILURE,
                                                CONNMAN_IPCONFIG_TYPE_IPV4);
 }
@@ -3665,7 +3639,7 @@ int __connman_service_clear_error(struct connman_service 
*service)
        if (service->favorite == TRUE)
                set_reconnect_state(service, TRUE);
 
-       __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE,
+       __connman_service_ipconfig_indicate_state(service, 
CONNMAN_SERVICE_STATE_IDLE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
        /*
@@ -3676,7 +3650,7 @@ int __connman_service_clear_error(struct connman_service 
*service)
                        service->state_ipv4 != CONNMAN_SERVICE_STATE_FAILURE)
                return 0;
 
-       return __connman_service_indicate_state(service,
+       return __connman_service_ipconfig_indicate_state(service,
                                                CONNMAN_SERVICE_STATE_IDLE,
                                                CONNMAN_IPCONFIG_TYPE_IPV4);
 }
@@ -3729,7 +3703,7 @@ int __connman_service_ipconfig_indicate_state(struct 
connman_service *service,
        if (current_state == state)
                return -EALREADY;
 
-       err = __connman_service_indicate_state(service, state, type);
+       err = indicate_state(service, state, type);
        if (err < 0)
                return err;
 
@@ -3959,10 +3933,10 @@ int __connman_service_connect(struct connman_service 
*service)
        if (service->userconnect == TRUE)
                reply_pending(service, err);
 
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
-       __connman_service_indicate_state(service,
+       __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
@@ -4462,7 +4436,8 @@ static void service_ip_bound(struct connman_ipconfig 
*ipconfig)
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
                        method == CONNMAN_IPCONFIG_METHOD_AUTO)
-               __connman_service_set_ipconfig_ready(service,
+               __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
                                                CONNMAN_IPCONFIG_TYPE_IPV6);
 
        settings_changed(service, ipconfig);
@@ -4484,13 +4459,13 @@ static void service_ip_release(struct connman_ipconfig 
*ipconfig)
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
                        method == CONNMAN_IPCONFIG_METHOD_OFF)
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_DISCONNECT,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV4 &&
                        method == CONNMAN_IPCONFIG_METHOD_OFF)
-               __connman_service_indicate_state(service,
+               __connman_service_ipconfig_indicate_state(service,
                                        CONNMAN_SERVICE_STATE_DISCONNECT,
                                        CONNMAN_IPCONFIG_TYPE_IPV4);
 
-- 
1.7.5.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to