コード例 #1
0
ファイル: mqtt.c プロジェクト: duxet/adium-facebook
static void
fb_mqtt_dispose(GObject *obj)
{
	FbMqtt *mqtt = FB_MQTT(obj);
	FbMqttPrivate *priv = mqtt->priv;

	fb_mqtt_close(mqtt);
	g_byte_array_free(priv->rbuf, TRUE);
	g_byte_array_free(priv->wbuf, TRUE);
}
コード例 #2
0
ファイル: facebook-mqtt.c プロジェクト: MartinBriza/gFB
/**
 * Frees all memory used by a #fb_mqtt.
 *
 * @param api The #fb_mqtt.
 **/
void fb_mqtt_free(fb_mqtt_t *mqtt)
{
    if (G_UNLIKELY(mqtt == NULL))
        return;

    fb_mqtt_close(mqtt);
    g_clear_error(&mqtt->err);

    g_byte_array_free(mqtt->wbuf, TRUE);
    g_byte_array_free(mqtt->rbuf, TRUE);

    g_free(mqtt);
}
コード例 #3
0
ファイル: mqtt.c プロジェクト: duxet/adium-facebook
void
fb_mqtt_disconnect(FbMqtt *mqtt)
{
	FbMqttMessage *msg;

	if (G_UNLIKELY(!fb_mqtt_connected(mqtt, FALSE))) {
		return;
	}

	msg = fb_mqtt_message_new(FB_MQTT_MESSAGE_TYPE_DISCONNECT, 0);
	fb_mqtt_write(mqtt, msg);
	g_object_unref(msg);
	fb_mqtt_close(mqtt);
}
コード例 #4
0
ファイル: facebook-mqtt.c プロジェクト: MartinBriza/gFB
/**
 * Disconnects from the MQTT service. This cleanly disconnects from the
 * MQTT services, rather than killing the socket stream. This closes
 * the #fb_mqtt via #fb_mqtt_close().
 *
 * @param mqtt The #fb_mqtt.
 **/
void fb_mqtt_disconnect(fb_mqtt_t *mqtt)
{
    fb_mqtt_msg_t *msg;

    g_return_if_fail(mqtt != NULL);

    if (G_UNLIKELY(!fb_mqtt_connected(mqtt, FALSE)))
        return;

    msg = fb_mqtt_msg_new(FB_MQTT_MSG_TYPE_DISCONNECT, 0);
    fb_mqtt_write(mqtt, msg);
    fb_mqtt_msg_free(msg);
    fb_mqtt_close(mqtt);
}
コード例 #5
0
ファイル: facebook-mqtt.c プロジェクト: MartinBriza/gFB
/**
 * Opens the connection to the MQTT service.
 *
 * @param mqtt The #fb_mqtt.
 **/
void fb_mqtt_open(fb_mqtt_t *mqtt, const gchar *host, gint port)
{
    g_return_if_fail(mqtt != NULL);

    fb_mqtt_close(mqtt);
    mqtt->ssl = ssl_connect((gchar*) host, port, TRUE, fb_mqtt_cb_open, mqtt);

    if (mqtt->ssl == NULL) {
        fb_mqtt_cb_open(mqtt, 1, NULL, 0);
        return;
    }

    fb_mqtt_timeout(mqtt);
}
コード例 #6
0
ファイル: mqtt.c プロジェクト: duxet/adium-facebook
void
fb_mqtt_open(FbMqtt *mqtt, const gchar *host, gint port)
{
	FbMqttPrivate *priv;
	PurpleAccount *acc;

	g_return_if_fail(FB_IS_MQTT(mqtt));
	priv = mqtt->priv;

	acc = purple_connection_get_account(priv->gc);
	fb_mqtt_close(mqtt);
	priv->gsc = purple_ssl_connect(acc, host, port, fb_mqtt_cb_open,
	                               fb_mqtt_cb_open_error, mqtt);

	if (priv->gsc == NULL) {
		fb_mqtt_cb_open_error(NULL, 0, mqtt);
		return;
	}

	fb_mqtt_timeout(mqtt);
}