--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/protocols/msn/servconn.h Tue May 06 02:06:56 2003 +0000 @@ -0,0 +1,106 @@ +/** + * @file servconn.h Server connection functions + * + * gaim + * + * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef _MSN_SERVCONN_H_ +#define _MSN_SERVCONN_H_ + +typedef struct _MsnServConn MsnServConn; + +#include "msg.h" + +typedef gboolean (*MsnServConnCommandCb)(MsnServConn *servconn, + const char *cmd, const char **params, + size_t param_count); + +typedef gboolean (*MsnServConnMsgCb)(MsnServConn *servconn, + const MsnMessage *msg); + +#include "session.h" + +struct _MsnServConn +{ + MsnSession *session; + + gboolean connected; + + char *server; + int port; + + int fd; + int inpa; + + char *rxqueue; + int rxlen; + + GSList *txqueue; + + gboolean parsing_msg; + char *msg_passport; + char *msg_friendly; + int msg_len; + + GHashTable *commands; + GHashTable *msg_types; + + gboolean (*connect_cb)(gpointer, gint, GaimInputCondition); + void (*failed_read_cb)(gpointer, gint, GaimInputCondition); + void (*login_cb)(gpointer, gint, GaimInputCondition); + + void *data; +}; + +MsnServConn *msn_servconn_new(MsnSession *session); + +void msn_servconn_destroy(MsnServConn *servconn); + +gboolean msn_servconn_connect(MsnServConn *servconn); +void msn_servconn_disconnect(MsnServConn *servconn); + +void msn_servconn_set_server(MsnServConn *servconn, const char *server, + int port); + +const char *msn_servconn_get_server(const MsnServConn *servconn); +int msn_servconn_get_port(const MsnServConn *servconn); + +void msn_servconn_set_connect_cb(MsnServConn *servconn, + gboolean (*connect_cb)(gpointer, gint, GaimInputCondition)); + +void msn_servconn_set_failed_read_cb(MsnServConn *servconn, + void (*failed_read_cb)(gpointer, gint, GaimInputCondition)); + +size_t msn_servconn_write(MsnServConn *servconn, const char *buf, + size_t size); + +gboolean msn_servconn_send_command(MsnServConn *servconn, const char *command, + const char *params); + +void msn_servconn_register_command(MsnServConn *servconn, + const char *command, + MsnServConnCommandCb cb); + +void msn_servconn_register_msg_type(MsnServConn *servconn, + const char *content_type, + MsnServConnMsgCb cb); + +void msn_servconn_parse_data(gpointer data, gint source, + GaimInputCondition cond); + +#endif /* _MSN_SERVCONN_H_ */