libpurple/purpleprotocol.c

changeset 41869
7bd5bff547b4
parent 41814
f8940ebd4eee
child 41884
36684da1e60d
equal deleted inserted replaced
41868:e69cbf7921ec 41869:7bd5bff547b4
163 purple_account_disconnect(account); 163 purple_account_disconnect(account);
164 } 164 }
165 } 165 }
166 166
167 /****************************************************************************** 167 /******************************************************************************
168 * PurpleProtocol Implementation
169 *****************************************************************************/
170 static PurpleConnection *
171 purple_protocol_default_create_connection(PurpleProtocol *protocol,
172 PurpleAccount *account,
173 const char *password,
174 G_GNUC_UNUSED GError **error)
175 {
176 return g_object_new(
177 PURPLE_TYPE_CONNECTION,
178 "protocol", protocol,
179 "account", account,
180 "password", password,
181 NULL);
182 }
183
184 /******************************************************************************
168 * GObject Implementation 185 * GObject Implementation
169 *****************************************************************************/ 186 *****************************************************************************/
170 static void 187 static void
171 purple_protocol_get_property(GObject *obj, guint param_id, GValue *value, 188 purple_protocol_get_property(GObject *obj, guint param_id, GValue *value,
172 GParamSpec *pspec) 189 GParamSpec *pspec)
284 301
285 obj_class->get_property = purple_protocol_get_property; 302 obj_class->get_property = purple_protocol_get_property;
286 obj_class->set_property = purple_protocol_set_property; 303 obj_class->set_property = purple_protocol_set_property;
287 obj_class->finalize = purple_protocol_finalize; 304 obj_class->finalize = purple_protocol_finalize;
288 305
306 klass->create_connection = purple_protocol_default_create_connection;
307
289 /** 308 /**
290 * PurpleProtocol::id: 309 * PurpleProtocol::id:
291 * 310 *
292 * The identifier for the protocol. 311 * The identifier for the protocol.
293 * 312 *
546 if(klass != NULL && klass->close != NULL) { 565 if(klass != NULL && klass->close != NULL) {
547 klass->close(protocol, gc); 566 klass->close(protocol, gc);
548 } 567 }
549 } 568 }
550 569
570
571 PurpleConnection *
572 purple_protocol_create_connection(PurpleProtocol *protocol,
573 PurpleAccount *account,
574 const char *password,
575 GError **error)
576 {
577 PurpleProtocolClass *klass = NULL;
578
579 g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), NULL);
580 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
581
582 klass = PURPLE_PROTOCOL_GET_CLASS(protocol);
583 if(klass != NULL && klass->create_connection != NULL) {
584 return klass->create_connection(protocol, account, password, error);
585 }
586
587 g_set_error(error, PURPLE_CONNECTION_ERROR, 0,
588 "Protocol %s did not implement create_connection",
589 purple_protocol_get_name(protocol));
590
591 return NULL;
592 }
593
551 GList * 594 GList *
552 purple_protocol_get_status_types(PurpleProtocol *protocol, 595 purple_protocol_get_status_types(PurpleProtocol *protocol,
553 PurpleAccount *account) 596 PurpleAccount *account)
554 { 597 {
555 PurpleProtocolClass *klass = NULL; 598 PurpleProtocolClass *klass = NULL;

mercurial