diff options
Diffstat (limited to 'src/ring-connection-manager.c')
-rw-r--r-- | src/ring-connection-manager.c | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/src/ring-connection-manager.c b/src/ring-connection-manager.c index 5b25c8f..c6960d4 100644 --- a/src/ring-connection-manager.c +++ b/src/ring-connection-manager.c @@ -40,6 +40,7 @@ #include "ring-connection-manager.h" #include "ring-connection.h" +#include "ring-protocol.h" #include "modem/service.h" @@ -68,46 +69,34 @@ ring_connection_manager_init(RingConnectionManager *self) modem_service_refresh (modem_service ()); } -static TpCMProtocolSpec ring_protocols[] = { - { - "tel", - NULL, /* filled in in ring_connection_manager_class_init() */ - ring_connection_params_alloc, - ring_connection_params_free - }, - { NULL, NULL } -}; - -static TpBaseConnection * -new_connection(TpBaseConnectionManager *base, - const char *proto, - TpIntSet *params_present, - gpointer parsed_params, - GError **error) +static void +ring_connection_manager_constructed (GObject *obj) { - if (strcmp(proto, "tel")) { - g_set_error(error, TP_ERRORS, - TP_ERROR_INVALID_ARGUMENT, "Protocol is not supported"); - return NULL; - } - - if (dbus_g_bus_get(DBUS_BUS_SYSTEM, error) == NULL) - return NULL; - - return (TpBaseConnection *)ring_connection_new(params_present, parsed_params); + RingConnectionManager *self = RING_CONNECTION_MANAGER (obj); + TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; + GObjectClass *base_class = (GObjectClass *) + ring_connection_manager_parent_class; + RingProtocol *protocol; + + if (base_class->constructed) + base_class->constructed (obj); + + protocol = ring_protocol_new (); + tp_base_connection_manager_add_protocol (base, TP_BASE_PROTOCOL (protocol)); + g_object_unref (protocol); } static void ring_connection_manager_class_init(RingConnectionManagerClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); TpBaseConnectionManagerClass *parent_class = &klass->parent_class; - g_type_class_add_private (klass, - sizeof (RingConnectionManagerPrivate)); + g_type_class_add_private (klass, sizeof (RingConnectionManagerPrivate)); - ring_protocols[0].parameters = ring_connection_get_param_specs(); + object_class->constructed = ring_connection_manager_constructed; - parent_class->new_connection = new_connection; + parent_class->new_connection = NULL; parent_class->cm_dbus_name = "ring"; - parent_class->protocol_params = ring_protocols; + parent_class->protocol_params = NULL; } |