/** * Sends a PING after #FB_MQTT_KA seconds. This clears any timeout which * currently exists. * * @param mqtt The #fb_mqtt. **/ static void fb_mqtt_ping(fb_mqtt_t *mqtt) { g_return_if_fail(mqtt != NULL); fb_mqtt_timeout_clear(mqtt); mqtt->tev = b_timeout_add(FB_MQTT_TIMEOUT_PING, fb_mqtt_cb_ping, mqtt); }
static void fb_mqtt_ping(FbMqtt *mqtt) { FbMqttPrivate *priv = mqtt->priv; fb_mqtt_timeout_clear(mqtt); priv->tev = purple_timeout_add(FB_MQTT_TIMEOUT_PING, fb_mqtt_cb_ping, mqtt); }
static void fb_mqtt_cb_open(gpointer data, PurpleSslConnection *ssl, PurpleInputCondition cond) { FbMqtt *mqtt = data; FbMqttPrivate *priv = mqtt->priv; fb_mqtt_timeout_clear(mqtt); priv->rev = purple_input_add(priv->gsc->fd, PURPLE_INPUT_READ, fb_mqtt_cb_read, mqtt); g_signal_emit_by_name(mqtt, "open"); }
/** * Implemented #ssl_input_function for the connection of #fb_mqtt->ssl. * * @param data The user defined data, which is #fb_mqtt. * @param error The SSL error. (0 on success) * @param ssl The SSL source. * @param cond The #b_input_condition. * * @return TRUE for continued event handling, otherwise FALSE. **/ static gboolean fb_mqtt_cb_open(gpointer data, gint error, gpointer ssl, b_input_condition cond) { fb_mqtt_t *mqtt = data; gint fd; if ((ssl == NULL) || (error != SSL_OK)) { fb_mqtt_error(mqtt, FB_MQTT_ERROR_GENERAL, "Failed to connect"); return FALSE; } fb_mqtt_timeout_clear(mqtt); fd = ssl_getfd(mqtt->ssl); mqtt->rev = b_input_add(fd, B_EV_IO_READ, fb_mqtt_cb_read, mqtt); FB_MQTT_FUNC(mqtt, open); return FALSE; }