summaryrefslogtreecommitdiff
path: root/src/ring-connection-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ring-connection-manager.c')
-rw-r--r--src/ring-connection-manager.c51
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;
}