本文整理汇总了C++中purple_input_remove函数的典型用法代码示例。如果您正苦于以下问题:C++ purple_input_remove函数的具体用法?C++ purple_input_remove怎么用?C++ purple_input_remove使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了purple_input_remove函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: nexus_write_cb
static void
nexus_write_cb(gpointer data, gint source, PurpleInputCondition cond)
{
MsnNexus *nexus = data;
gssize len, total_len;
total_len = strlen(nexus->write_buf);
len = purple_ssl_write(nexus->gsc,
nexus->write_buf + nexus->written_len,
total_len - nexus->written_len);
if (len < 0 && errno == EAGAIN)
return;
else if (len <= 0) {
purple_input_remove(nexus->input_handler);
nexus->input_handler = 0;
/* TODO: notify of the error */
return;
}
nexus->written_len += len;
if (nexus->written_len < total_len)
return;
purple_input_remove(nexus->input_handler);
nexus->input_handler = 0;
g_free(nexus->write_buf);
nexus->write_buf = NULL;
nexus->written_len = 0;
nexus->written_cb(nexus, source, 0);
}
开发者ID:praveenmarkandu,项目名称:msn-pecan,代码行数:34,代码来源:nexus.c
示例2: msn_servconn_destroy
void
msn_servconn_destroy(MsnServConn *servconn)
{
g_return_if_fail(servconn != NULL);
if (servconn->processing)
{
servconn->wasted = TRUE;
return;
}
msn_servconn_disconnect(servconn);
if (servconn->destroy_cb)
servconn->destroy_cb(servconn);
if (servconn->httpconn != NULL)
msn_httpconn_destroy(servconn->httpconn);
g_free(servconn->host);
purple_circ_buffer_destroy(servconn->tx_buf);
if (servconn->tx_handler > 0)
purple_input_remove(servconn->tx_handler);
if (servconn->timeout_handle > 0)
purple_input_remove(servconn->timeout_handle);
msn_cmdproc_destroy(servconn->cmdproc);
g_free(servconn);
}
开发者ID:wosigh,项目名称:messaging-plugins,代码行数:30,代码来源:servconn.c
示例3: flap_connection_close
/**
* Close (but not free) a connection.
*
* This cancels any currently pending connection attempt,
* closes any open fd and frees the auth cookie.
*
* @param conn The connection to close.
*/
void
flap_connection_close(OscarData *od, FlapConnection *conn)
{
if (conn->connect_data != NULL)
{
purple_proxy_connect_cancel(conn->connect_data);
conn->connect_data = NULL;
}
if (conn->gsc != NULL && conn->gsc->connect_data != NULL)
{
purple_ssl_close(conn->gsc);
conn->gsc = NULL;
}
if (conn->new_conn_data != NULL)
{
if (conn->type == SNAC_FAMILY_CHAT)
{
oscar_chat_destroy(conn->new_conn_data);
conn->new_conn_data = NULL;
}
}
if ((conn->fd >= 0 || conn->gsc != NULL)
&& conn->type == SNAC_FAMILY_LOCATE)
flap_connection_send_close(od, conn);
if (conn->watcher_incoming != 0)
{
purple_input_remove(conn->watcher_incoming);
conn->watcher_incoming = 0;
}
if (conn->watcher_outgoing != 0)
{
purple_input_remove(conn->watcher_outgoing);
conn->watcher_outgoing = 0;
}
if (conn->fd >= 0)
{
close(conn->fd);
conn->fd = -1;
}
if (conn->gsc != NULL)
{
purple_ssl_close(conn->gsc);
conn->gsc = NULL;
}
g_free(conn->buffer_incoming.data.data);
conn->buffer_incoming.data.data = NULL;
purple_circ_buffer_destroy(conn->buffer_outgoing);
conn->buffer_outgoing = NULL;
}
开发者ID:Draghtnod,项目名称:pidgin,代码行数:66,代码来源:flap_connection.c
示例4: http_connection_disconnected
static void http_connection_disconnected(PurpleHTTPConnection *conn)
{
gboolean had_requests = FALSE;
/*
* Well, then. Fine! I never liked you anyway, server! I was cheating on you
* with AIM!
*/
conn->state = HTTP_CONN_OFFLINE;
if (conn->psc) {
purple_ssl_close(conn->psc);
conn->psc = NULL;
} else if (conn->fd >= 0) {
close(conn->fd);
conn->fd = -1;
}
if (conn->readh) {
purple_input_remove(conn->readh);
conn->readh = 0;
}
if (conn->writeh) {
purple_input_remove(conn->writeh);
conn->writeh = 0;
}
had_requests = (conn->requests > 0);
if (had_requests && conn->read_buf->len == 0) {
purple_debug_error("jabber", "bosh: Adjusting BOSHconn requests (%d) to %d\n",
conn->bosh->requests, conn->bosh->requests - conn->requests);
conn->bosh->requests -= conn->requests;
conn->requests = 0;
}
if (conn->bosh->pipelining) {
/* Hmmmm, fall back to multiple connections */
jabber_bosh_disable_pipelining(conn->bosh);
}
if (!had_requests)
/* If the server disconnected us without any requests, let's
* just wait until we have something to send before we reconnect
*/
return;
if (++conn->bosh->failed_connections == MAX_FAILED_CONNECTIONS) {
purple_connection_error_reason(conn->bosh->js->gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
_("Unable to establish a connection with the server"));
} else {
/* No! Please! Take me back. It was me, not you! I was weak! */
http_connection_connect(conn);
}
}
开发者ID:Lilitana,项目名称:Pidgin,代码行数:54,代码来源:bosh.c
示例5: msn_servconn_disconnect
void
msn_servconn_disconnect(MsnServConn *servconn)
{
g_return_if_fail(servconn != NULL);
if (servconn->connect_data != NULL)
{
purple_proxy_connect_cancel(servconn->connect_data);
servconn->connect_data = NULL;
}
if (!servconn->connected)
{
/* We could not connect. */
if (servconn->disconnect_cb != NULL)
servconn->disconnect_cb(servconn);
return;
}
if (servconn->session->http_method)
{
/* Fake disconnection. */
if (servconn->disconnect_cb != NULL)
servconn->disconnect_cb(servconn);
return;
}
if (servconn->inpa > 0)
{
purple_input_remove(servconn->inpa);
servconn->inpa = 0;
}
if (servconn->timeout_handle > 0)
{
purple_input_remove(servconn->timeout_handle);
servconn->timeout_handle = 0;
}
close(servconn->fd);
servconn->rx_buf = NULL;
servconn->rx_len = 0;
servconn->payload_len = 0;
servconn->connected = FALSE;
if (servconn->disconnect_cb != NULL)
servconn->disconnect_cb(servconn);
}
开发者ID:wosigh,项目名称:messaging-plugins,代码行数:52,代码来源:servconn.c
示例6: irc_dccsend_send_read
/* just in case you were wondering, this is why DCC is gay */
static void irc_dccsend_send_read(gpointer data, int source, PurpleInputCondition cond)
{
PurpleXfer *xfer = data;
struct irc_xfer_send_data *xd = purple_xfer_get_protocol_data(xfer);
char buffer[64];
int len;
len = read(source, buffer, sizeof(buffer));
if (len < 0 && errno == EAGAIN)
return;
else if (len <= 0) {
/* XXX: Shouldn't this be canceling the transfer? */
purple_input_remove(xd->inpa);
xd->inpa = 0;
return;
}
xd->rxqueue = g_realloc(xd->rxqueue, len + xd->rxlen);
memcpy(xd->rxqueue + xd->rxlen, buffer, len);
xd->rxlen += len;
while (1) {
gint32 val;
size_t acked;
if (xd->rxlen < 4)
break;
memcpy(&val, xd->rxqueue, sizeof(val));
acked = ntohl(val);
xd->rxlen -= 4;
if (xd->rxlen) {
unsigned char *tmp = g_memdup(xd->rxqueue + 4, xd->rxlen);
g_free(xd->rxqueue);
xd->rxqueue = tmp;
} else {
g_free(xd->rxqueue);
xd->rxqueue = NULL;
}
if ((goffset)acked >= purple_xfer_get_size(xfer)) {
purple_input_remove(xd->inpa);
xd->inpa = 0;
purple_xfer_set_completed(xfer, TRUE);
purple_xfer_end(xfer);
return;
}
}
}
开发者ID:N8Fear,项目名称:purple-facebook,代码行数:52,代码来源:dcc_send.c
示例7: http_connection_disconnected
static void http_connection_disconnected(PurpleHTTPConnection *conn)
{
/*
* Well, then. Fine! I never liked you anyway, server! I was cheating on you
* with AIM!
*/
conn->state = HTTP_CONN_OFFLINE;
if (conn->psc) {
purple_ssl_close(conn->psc);
conn->psc = NULL;
} else if (conn->fd >= 0) {
close(conn->fd);
conn->fd = -1;
}
if (conn->readh) {
purple_input_remove(conn->readh);
conn->readh = 0;
}
if (conn->writeh) {
purple_input_remove(conn->writeh);
conn->writeh = 0;
}
if (conn->requests > 0 && conn->read_buf->len == 0) {
purple_debug_error("jabber", "bosh: Adjusting BOSHconn requests (%d) to %d\n",
conn->bosh->requests, conn->bosh->requests - conn->requests);
conn->bosh->requests -= conn->requests;
conn->requests = 0;
}
if (conn->bosh->pipelining) {
/* Hmmmm, fall back to multiple connections */
conn->bosh->pipelining = FALSE;
if (conn->bosh->connections[1] == NULL) {
conn->bosh->connections[1] = jabber_bosh_http_connection_init(conn->bosh);
http_connection_connect(conn->bosh->connections[1]);
}
}
if (++conn->bosh->failed_connections == MAX_FAILED_CONNECTIONS) {
purple_connection_error_reason(conn->bosh->js->gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
_("Unable to establish a connection with the server"));
} else {
/* No! Please! Take me back. It was me, not you! I was weak! */
http_connection_connect(conn);
}
}
开发者ID:wosigh,项目名称:messaging-plugins,代码行数:50,代码来源:bosh.c
示例8: irc_close
static void irc_close(PurpleConnection *gc)
{
struct irc_conn *irc = gc->proto_data;
if (irc == NULL)
return;
if (irc->gsc || (irc->fd >= 0))
irc_cmd_quit(irc, "quit", NULL, NULL);
if (gc->inpa)
purple_input_remove(gc->inpa);
g_free(irc->inbuf);
if (irc->gsc) {
purple_ssl_close(irc->gsc);
} else if (irc->fd >= 0) {
close(irc->fd);
}
if (irc->timer)
purple_timeout_remove(irc->timer);
g_hash_table_destroy(irc->cmds);
g_hash_table_destroy(irc->msgs);
g_hash_table_destroy(irc->buddies);
if (irc->motd)
g_string_free(irc->motd, TRUE);
g_free(irc->server);
if (irc->writeh)
purple_input_remove(irc->writeh);
purple_circ_buffer_destroy(irc->outbuf);
g_free(irc->mode_chars);
g_free(irc->reqnick);
#ifdef HAVE_CYRUS_SASL
if (irc->sasl_conn) {
sasl_dispose(&irc->sasl_conn);
irc->sasl_conn = NULL;
}
g_free(irc->sasl_cb);
if(irc->sasl_mechs)
g_string_free(irc->sasl_mechs, TRUE);
#endif
g_free(irc);
}
开发者ID:dylex,项目名称:pidgin,代码行数:49,代码来源:irc.c
示例9: msn_dc_incoming_connection_timeout_cb
/*
* This callback will be called when we're the server
* and nobody has connected us in DC_INCOMING_TIMEOUT seconds
*/
static gboolean
msn_dc_incoming_connection_timeout_cb(gpointer data) {
MsnDirectConn *dc = data;
if (purple_debug_is_verbose())
purple_debug_info("msn", "msn_dc_incoming_connection_timeout_cb %p\n", dc);
g_return_val_if_fail(dc != NULL, FALSE);
if (dc->listen_data != NULL) {
purple_network_listen_cancel(dc->listen_data);
dc->listen_data = NULL;
}
if (dc->listenfd_handle != 0) {
purple_input_remove(dc->listenfd_handle);
dc->listenfd_handle = 0;
}
if (dc->listenfd != -1) {
purple_network_remove_port_mapping(dc->listenfd);
close(dc->listenfd);
dc->listenfd = -1;
}
dc->connect_timeout_handle = 0;
msn_dc_fallback_to_sb(dc);
return FALSE;
}
开发者ID:matyapiro31,项目名称:instantbird-1.5,代码行数:34,代码来源:directconn.c
示例10: msn_dc_send_cb
static void
msn_dc_send_cb(gpointer data, gint fd, PurpleInputCondition cond)
{
MsnDirectConn *dc = data;
MsnDirectConnPacket *p;
int bytes_to_send;
int bytes_sent;
g_return_if_fail(dc != NULL);
g_return_if_fail(fd != -1);
if (g_queue_is_empty(dc->out_queue)) {
if (dc->send_handle != 0) {
purple_input_remove(dc->send_handle);
dc->send_handle = 0;
}
return;
}
p = g_queue_peek_head(dc->out_queue);
if (dc->msg_pos < 0) {
/* First we send the length of the packet */
guint32 len = GUINT32_TO_LE(p->length);
bytes_sent = send(fd, &len, 4, 0);
if (bytes_sent < 0) {
if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
return;
purple_debug_warning("msn", "msn_dc_send_cb: send error\n");
msn_dc_destroy(dc);
return;
}
dc->msg_pos = 0;
}
bytes_to_send = p->length - dc->msg_pos;
bytes_sent = send(fd, p->data + dc->msg_pos, bytes_to_send, 0);
if (bytes_sent < 0) {
if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
return;
purple_debug_warning("msn", "msn_dc_send_cb: send error\n");
msn_dc_destroy(dc);
return;
}
dc->progress = TRUE;
dc->msg_pos += bytes_sent;
if (dc->msg_pos == p->length) {
if (p->sent_cb != NULL)
p->sent_cb(p);
g_queue_pop_head(dc->out_queue);
msn_dc_destroy_packet(p);
dc->msg_pos = -1;
}
}
开发者ID:matyapiro31,项目名称:instantbird-1.5,代码行数:60,代码来源:directconn.c
示例11: ycht_packet_send_write_cb
static void ycht_packet_send_write_cb(gpointer data, gint source, PurpleInputCondition cond)
{
YchtConn *ycht = data;
int ret, writelen;
const gchar *output = NULL;
writelen = purple_circular_buffer_get_max_read(ycht->txbuf);
if (writelen == 0) {
purple_input_remove(ycht->tx_handler);
ycht->tx_handler = 0;
return;
}
output = purple_circular_buffer_get_output(ycht->txbuf);
ret = write(ycht->fd, output, writelen);
if (ret < 0 && errno == EAGAIN)
return;
else if (ret <= 0) {
/* TODO: error handling */
/*
gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
g_strerror(errno));
purple_connection_error(purple_account_get_connection(irc->account),
PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
g_free(tmp);
*/
return;
}
purple_circular_buffer_mark_read(ycht->txbuf, ret);
}
开发者ID:Distrotech,项目名称:pidgin,代码行数:35,代码来源:ycht.c
示例12: purple_ssl_close
void
purple_ssl_close(PurpleSslConnection *gsc)
{
PurpleSslOps *ops;
g_return_if_fail(gsc != NULL);
purple_request_close_with_handle(gsc);
purple_notify_close_with_handle(gsc);
ops = purple_ssl_get_ops();
(ops->close)(gsc);
if (gsc->connect_data != NULL)
purple_proxy_connect_cancel(gsc->connect_data);
if (gsc->inpa > 0)
purple_input_remove(gsc->inpa);
if (gsc->fd >= 0)
close(gsc->fd);
g_free(gsc->host);
g_free(gsc);
}
开发者ID:Draghtnod,项目名称:pidgin,代码行数:25,代码来源:sslconn.c
示例13: UploadPortrait_cb
void UploadPortrait_cb(gpointer data, gint source, const gchar * error_message)
{
struct fetion_account_data *sip = data;
gsize max_write;
gssize written;
max_write = purple_circ_buffer_get_max_read(sip->icon_buf);
if (max_write == 0) {
purple_input_remove(sip->icon_handler);
sip->icon_handler = 0;
return;
}
written = write(source, sip->icon_buf->outptr, max_write);
purple_debug_info("fetion:", "UploadPortrait[%d][%d]", max_write,
written);
if (written < 0 && errno == EAGAIN)
written = 0;
else if (written <= 0) {
/*TODO: do we really want to disconnect on a failure to write? */
purple_connection_error_reason(sip->gc,
PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
_("Could not write"));
return;
}
purple_circ_buffer_mark_read(sip->icon_buf, written);
}
开发者ID:cxcxcxcx,项目名称:fetion,代码行数:28,代码来源:f_portrait.c
示例14: steam_connection_destroy
void steam_connection_destroy(SteamConnection *steamcon)
{
steamcon->sa->conns = g_slist_remove(steamcon->sa->conns, steamcon);
if (steamcon->request != NULL)
g_string_free(steamcon->request, TRUE);
g_free(steamcon->rx_buf);
if (steamcon->connect_data != NULL)
purple_proxy_connect_cancel(steamcon->connect_data);
if (steamcon->ssl_conn != NULL)
purple_ssl_close(steamcon->ssl_conn);
if (steamcon->fd >= 0) {
close(steamcon->fd);
}
if (steamcon->input_watcher > 0)
purple_input_remove(steamcon->input_watcher);
g_free(steamcon->url);
g_free(steamcon->hostname);
g_free(steamcon);
}
开发者ID:xnyhps,项目名称:Steamium,代码行数:26,代码来源:steam_connection.c
示例15: purple_upnp_discover_timeout
static gboolean
purple_upnp_discover_timeout(gpointer data)
{
UPnPDiscoveryData* dd = data;
if (dd->inpa)
purple_input_remove(dd->inpa);
if (dd->tima > 0)
purple_timeout_remove(dd->tima);
dd->inpa = 0;
dd->tima = 0;
if (dd->retry_count < NUM_UDP_ATTEMPTS) {
/* TODO: We probably shouldn't be incrementing retry_count in two places */
dd->retry_count++;
purple_upnp_discover_send_broadcast(dd);
} else {
if (dd->fd != -1)
close(dd->fd);
control_info.status = PURPLE_UPNP_STATUS_UNABLE_TO_DISCOVER;
control_info.lookup_time = time(NULL);
control_info.service_type[0] = '\0';
g_free(control_info.control_url);
control_info.control_url = NULL;
fire_discovery_callbacks(FALSE);
g_free(dd);
}
return FALSE;
}
开发者ID:Lilitana,项目名称:Pidgin,代码行数:33,代码来源:upnp.c
示例16: purple_xfer_end
void
purple_xfer_end(PurpleXfer *xfer)
{
g_return_if_fail(xfer != NULL);
/* See if we are actually trying to cancel this. */
if (!purple_xfer_is_completed(xfer)) {
purple_xfer_cancel_local(xfer);
return;
}
xfer->end_time = time(NULL);
if (xfer->ops.end != NULL)
xfer->ops.end(xfer);
if (xfer->watcher != 0) {
purple_input_remove(xfer->watcher);
xfer->watcher = 0;
}
if (xfer->fd != -1)
close(xfer->fd);
if (xfer->dest_fp != NULL) {
fclose(xfer->dest_fp);
xfer->dest_fp = NULL;
}
purple_xfer_unref(xfer);
}
开发者ID:crodjer,项目名称:pidgin_whiteboard,代码行数:30,代码来源:ft.c
示例17: sevencup_connection_close
void
sevencup_connection_close(SevenCupConnection *scon)
{
scon->sa->conns = g_slist_remove(scon->sa->conns, scon);
if (scon->connect_data != NULL) {
purple_proxy_connect_cancel(scon->connect_data);
scon->connect_data = NULL;
}
if (scon->ssl_conn != NULL) {
purple_ssl_close(scon->ssl_conn);
scon->ssl_conn = NULL;
}
if (scon->fd >= 0) {
close(scon->fd);
scon->fd = -1;
}
if (scon->input_watcher > 0) {
purple_input_remove(scon->input_watcher);
scon->input_watcher = 0;
}
purple_timeout_remove(scon->timeout_watcher);
g_free(scon->rx_buf);
scon->rx_buf = NULL;
scon->rx_len = 0;
}
开发者ID:EionRobb,项目名称:pidgin-7cupsotea,代码行数:31,代码来源:7cup_connection.c
示例18: irc_send_cb
static void
irc_send_cb(gpointer data, gint source, PurpleInputCondition cond)
{
struct irc_conn *irc = data;
int ret, writelen;
writelen = purple_circ_buffer_get_max_read(irc->outbuf);
if (writelen == 0) {
purple_input_remove(irc->writeh);
irc->writeh = 0;
return;
}
ret = do_send(irc, irc->outbuf->outptr, writelen);
if (ret < 0 && errno == EAGAIN)
return;
else if (ret <= 0) {
purple_connection_error(purple_account_get_connection(irc->account),
_("Server has disconnected"));
return;
}
purple_circ_buffer_mark_read(irc->outbuf, ret);
#if 0
/* We *could* try to write more if we wrote it all */
if (ret == write_len) {
irc_send_cb(data, source, cond);
}
#endif
}
开发者ID:arminius2,项目名称:apolloim,代码行数:33,代码来源:irc.c
示例19: waprpl_close
static void waprpl_close(PurpleConnection *gc) {
whatsapp_connection * wconn = purple_connection_get_protocol_data(gc);
if (wconn->rh)
purple_input_remove(wconn->rh);
if (wconn->wh)
purple_input_remove(wconn->wh);
if (wconn->fd >= 0)
close(wconn->fd);
if (wconn->waAPI)
waAPI_delete(wconn->waAPI);
g_free(wconn);
}
开发者ID:yah0o2010,项目名称:whatsapp-purple,代码行数:16,代码来源:wa_purple.c
示例20: msn_dc_incoming_connection_cb
/*
* This callback will be called when we're the server
* and somebody has connected to us in DC_INCOMING_TIMEOUT seconds.
*/
static void
msn_dc_incoming_connection_cb(gpointer data, gint listenfd, PurpleInputCondition cond)
{
MsnDirectConn *dc = data;
if (purple_debug_is_verbose())
purple_debug_info("msn", "msn_dc_incoming_connection_cb %p\n", dc);
g_return_if_fail(dc != NULL);
if (dc->connect_timeout_handle != 0) {
purple_timeout_remove(dc->connect_timeout_handle);
dc->connect_timeout_handle = 0;
}
if (dc->listenfd_handle != 0) {
purple_input_remove(dc->listenfd_handle);
dc->listenfd_handle = 0;
}
dc->fd = accept(listenfd, NULL, 0);
purple_network_remove_port_mapping(dc->listenfd);
close(dc->listenfd);
dc->listenfd = -1;
if (dc->fd != -1) {
msn_dc_init(dc);
dc->state = DC_STATE_FOO;
}
}
开发者ID:matyapiro31,项目名称:instantbird-1.5,代码行数:35,代码来源:directconn.c
注:本文中的purple_input_remove函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论