comparison src/protocols/msn/servconn.h @ 8808:bbd8cdaf0ad5

[gaim-migrate @ 9570] A massive patch by shx to reorganize MSN some more and add command processor support. This allows us to do cool things like produce more detailed error messages. For example, the Invalid Username dialog now shows the username of the invalid user. I modified the aforementioned dialog so it'll look a little nicer looking, and also mention the account this happened on. It also removes the user from your blist, as there's no point to keeping the user on there. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 25 Apr 2004 22:02:06 +0000
parents 1e211dde3cae
children c30d81b4dd22
comparison
equal deleted inserted replaced
8807:482fc53c969d 8808:bbd8cdaf0ad5
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */ 21 */
22 #ifndef _MSN_SERVCONN_H_ 22 #ifndef _MSN_SERVCONN_H_
23 #define _MSN_SERVCONN_H_ 23 #define _MSN_SERVCONN_H_
24 24
25 typedef struct _MsnServConn MsnServConn;
26
27 #include "cmdproc.h"
25 #include "proxy.h" 28 #include "proxy.h"
26
27 typedef struct _MsnServConn MsnServConn;
28 29
29 #include "msg.h" 30 #include "msg.h"
30 #include "httpmethod.h" 31 #include "httpmethod.h"
31 32
32 typedef gboolean (*MsnServConnCommandCb)(MsnServConn *servconn, 33 #include "session.h"
33 const char *cmd, const char **params,
34 size_t param_count);
35 34
36 typedef gboolean (*MsnServConnMsgCb)(MsnServConn *servconn, MsnMessage *msg); 35 typedef enum
36 {
37 MSN_SERVER_NS,
38 MSN_SERVER_SB,
39 MSN_SERVER_NX,
40 MSN_SERVER_DC,
41 MSN_SERVER_HT
37 42
38 typedef void (*MsnPayloadCb)(MsnServConn *servconn, char *payload, 43 } MsnServerType;
39 size_t len);
40
41 #include "session.h"
42 44
43 struct _MsnServConn 45 struct _MsnServConn
44 { 46 {
47 MsnServerType type;
45 MsnSession *session; 48 MsnSession *session;
49 MsnCmdProc *cmdproc;
46 50
47 gboolean connected; 51 gboolean connected;
52 gboolean processing;
48 gboolean wasted; 53 gboolean wasted;
49 54
55 int num;
56
50 MsnHttpMethodData *http_data; 57 MsnHttpMethodData *http_data;
51
52 #if 0
53 /* shx: not used */
54 char *host;
55 int port;
56 #endif
57 58
58 int fd; 59 int fd;
59 int inpa; 60 int inpa;
60 61
61 char *rx_buf; 62 char *rx_buf;
62 int rx_len; 63 int rx_len;
63 64
64 MsnPayloadCb payload_cb;
65 int payload_len; 65 int payload_len;
66
67 GSList *msg_queue;
68
69 GSList *txqueue;
70
71 char *msg_passport;
72
73 GHashTable *commands;
74 GHashTable *msg_types;
75 66
76 gboolean (*connect_cb)(MsnServConn *servconn); 67 gboolean (*connect_cb)(MsnServConn *servconn);
77 void (*disconnect_cb)(MsnServConn *servconn); 68 void (*disconnect_cb)(MsnServConn *servconn);
78 69
79 void *data; 70 void *data;
80 }; 71 };
81 72
82 MsnServConn *msn_servconn_new(MsnSession *session); 73 MsnServConn *msn_servconn_new(MsnSession *session, MsnServerType type);
83 74
84 void msn_servconn_destroy(MsnServConn *servconn); 75 void msn_servconn_destroy(MsnServConn *servconn);
85 76
86 gboolean msn_servconn_connect(MsnServConn *servconn, const char *host, 77 gboolean msn_servconn_connect(MsnServConn *servconn, const char *host,
87 int port); 78 int port);
88 void msn_servconn_disconnect(MsnServConn *servconn); 79 void msn_servconn_disconnect(MsnServConn *servconn);
89
90 #if 0
91 /* shx: not used */
92 void msn_servconn_set_server(MsnServConn *servconn, const char *server,
93 int port);
94
95 const char *msn_servconn_get_server(const MsnServConn *servconn);
96 int msn_servconn_get_port(const MsnServConn *servconn);
97 #endif
98 80
99 void msn_servconn_set_connect_cb(MsnServConn *servconn, 81 void msn_servconn_set_connect_cb(MsnServConn *servconn,
100 gboolean (*connect_cb)(MsnServConn *servconn)); 82 gboolean (*connect_cb)(MsnServConn *servconn));
101 83
102 void msn_servconn_set_disconnect_cb(MsnServConn *servconn, 84 void msn_servconn_set_disconnect_cb(MsnServConn *servconn,
103 void (*disconnect_cb)(MsnServConn *servconn)); 85 void (*disconnect_cb)(MsnServConn *servconn));
104 86
105 size_t msn_servconn_write(MsnServConn *servconn, const char *buf, 87 size_t msn_servconn_write(MsnServConn *servconn, const char *buf,
106 size_t size); 88 size_t size);
107 89
108 gboolean msn_servconn_send_command(MsnServConn *servconn, const char *command,
109 const char *params);
110
111 void msn_servconn_queue_message(MsnServConn *servconn, const char *command,
112 MsnMessage *msg);
113
114 void msn_servconn_unqueue_message(MsnServConn *servconn, MsnMessage *msg);
115
116 void msn_servconn_register_command(MsnServConn *servconn,
117 const char *command,
118 MsnServConnCommandCb cb);
119
120 void msn_servconn_register_msg_type(MsnServConn *servconn,
121 const char *content_type,
122 MsnServConnMsgCb cb);
123
124 gboolean msn_servconn_process_message(MsnServConn *servconn,
125 MsnMessage *msg);
126
127 #endif /* _MSN_SERVCONN_H_ */ 90 #endif /* _MSN_SERVCONN_H_ */