comparison libpurple/protocols/jabber/bosh.h @ 25042:1cbe5a9f6efb

* adding bosh files to Makefile.am & .mingw * establishing HTTP connection for BOSH
author Tobias Markmann <tfar@soc.pidgin.im>
date Tue, 05 Aug 2008 18:44:42 +0000
parents b238da95f39a
children 15d9825a5621
comparison
equal deleted inserted replaced
25041:3176d5a0b9dd 25042:1cbe5a9f6efb
24 24
25 #include <glib.h> 25 #include <glib.h>
26 26
27 typedef struct _PurpleHTTPRequest PurpleHTTPRequest; 27 typedef struct _PurpleHTTPRequest PurpleHTTPRequest;
28 typedef struct _PurpleHTTPResponse PurpleHTTPResponse; 28 typedef struct _PurpleHTTPResponse PurpleHTTPResponse;
29 typedef struct _PurpleHTTPHeaderField PurpleHTTPHeaderField; 29 typedef struct _PurpleHTTPConnection PurpleHTTPConnection;
30 typedef struct _PurpleBOSHConnection PurpleBOSHConnection;
30 31
32 typedef void (*PurpleHTTPConnectionConnectFunction)(PurpleHTTPConnection *conn);
31 typedef void (*PurpleHTTPRequestCallback)(PurpleHTTPRequest *req, PurpleHTTPResponse *res, void *userdata); 33 typedef void (*PurpleHTTPRequestCallback)(PurpleHTTPRequest *req, PurpleHTTPResponse *res, void *userdata);
34 typedef void (*PurpleBOSHConnectionConnectFunction)(PurpleBOSHConnection *conn);
35 typedef void (*PurpleBOSHConnectionReciveFunction)(PurpleBOSHConnection *conn, xmlnode *node);
32 36
33 typedef struct { 37 struct _PurpleBOSHConnection {
34 int fd; 38 /* decoded URL */
35 PurpleConnection *conn; 39 char *host;
36 GQueue *requests; 40 int port;
41 char *path;
42 char *user;
43 char *passwd;
44
37 void *userdata; 45 void *userdata;
38 } PurpleHTTPConnection; 46 PurpleAccount *account;
39
40 typedef struct {
41 char *url;
42 gboolean pipelining; 47 gboolean pipelining;
43 PurpleHTTPConnection *conn_a; 48 PurpleHTTPConnection *conn_a;
44 PurpleHTTPConnection *conn_b; 49 PurpleHTTPConnection *conn_b;
45 } PurpleBOSHConnection; 50
51 PurpleBOSHConnectionConnectFunction connect_cb;
52 PurpleBOSHConnectionReciveFunction receive_cb;
53 };
54
55 struct _PurpleHTTPConnection {
56 int fd;
57 char *host;
58 int port;
59 int handle;
60 PurpleConnection *conn;
61 PurpleAccount *account;
62 GQueue *requests;
63
64 PurpleHTTPConnectionConnectFunction connect_cb;
65 void *userdata;
66 };
46 67
47 struct _PurpleHTTPRequest { 68 struct _PurpleHTTPRequest {
48 PurpleHTTPRequestCallback cb; 69 PurpleHTTPRequestCallback cb;
49 char *method; 70 char *method;
50 char *url; 71 char *url;
53 void *userdata; 74 void *userdata;
54 }; 75 };
55 76
56 struct _PurpleHTTPResponse { 77 struct _PurpleHTTPResponse {
57 int status; 78 int status;
58 GList *header; 79 GHashTable *header;
59 char *data; 80 char *data;
60 }; 81 };
61 82
62 struct _PurpleHTTPHeaderField { 83 void jabber_bosh_connection_init(PurpleBOSHConnection *conn, PurpleAccount *account, char *url);
63 char *name; 84 void jabber_bosh_connection_connect(PurpleBOSHConnection *conn);
64 char *value;
65 };
66 85
67 PurpleHTTPHeaderField *jabber_bosh_http_header_field(const char *name, const char *value); 86 void jabber_bosh_http_connection_init(PurpleHTTPConnection *conn, PurpleAccount *account, char *host, int port);
68
69 void jabber_bosh_http_connection_connect(PurpleHTTPConnection *conn); 87 void jabber_bosh_http_connection_connect(PurpleHTTPConnection *conn);
70 void jabber_bosh_http_send_request(PurpleHTTPConnection *conn, PurpleHTTPRequest *req); 88 void jabber_bosh_http_send_request(PurpleHTTPConnection *conn, PurpleHTTPRequest *req);
71 void jabber_bosh_http_connection_clean(PurpleHTTPConnection *conn); 89 void jabber_bosh_http_connection_clean(PurpleHTTPConnection *conn);
72 90
73 void jabber_bosh_http_request_init(PurpleHTTPRequest *req, const char *method, const char *url, PurpleHTTPRequestCallback cb, void *userdata); 91 void jabber_bosh_http_request_init(PurpleHTTPRequest *req, const char *method, const char *path, PurpleHTTPRequestCallback cb, void *userdata);
74 void jabber_bosh_http_request_clean(PurpleHTTPRequest *req); 92 void jabber_bosh_http_request_clean(PurpleHTTPRequest *req);
75 #endif /* _PURPLE_JABBER_BOSH_H_ */ 93 #endif /* _PURPLE_JABBER_BOSH_H_ */