diff libpurple/protocols/jabber/bosh.h @ 25600: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
line wrap: on
line diff
--- a/libpurple/protocols/jabber/bosh.h	Sun Aug 03 22:58:10 2008 +0000
+++ b/libpurple/protocols/jabber/bosh.h	Tue Aug 05 18:44:42 2008 +0000
@@ -26,23 +26,44 @@
 
 typedef struct _PurpleHTTPRequest PurpleHTTPRequest;
 typedef struct _PurpleHTTPResponse PurpleHTTPResponse;
-typedef struct _PurpleHTTPHeaderField PurpleHTTPHeaderField;
+typedef struct _PurpleHTTPConnection PurpleHTTPConnection;
+typedef struct _PurpleBOSHConnection PurpleBOSHConnection;
 
+typedef void (*PurpleHTTPConnectionConnectFunction)(PurpleHTTPConnection *conn);
 typedef void (*PurpleHTTPRequestCallback)(PurpleHTTPRequest *req, PurpleHTTPResponse *res, void *userdata);
+typedef void (*PurpleBOSHConnectionConnectFunction)(PurpleBOSHConnection *conn);
+typedef void (*PurpleBOSHConnectionReciveFunction)(PurpleBOSHConnection *conn, xmlnode *node);
 
-typedef struct {
-    int fd;
-    PurpleConnection *conn;
-    GQueue *requests;
+struct _PurpleBOSHConnection {
+    /* decoded URL */
+    char *host;
+    int port;
+    char *path; 
+    char *user;
+    char *passwd;
+    
     void *userdata;
-} PurpleHTTPConnection;
-
-typedef struct {
-    char *url;
+    PurpleAccount *account;
     gboolean pipelining;
     PurpleHTTPConnection *conn_a;
     PurpleHTTPConnection *conn_b;
-} PurpleBOSHConnection;
+    
+    PurpleBOSHConnectionConnectFunction connect_cb;
+    PurpleBOSHConnectionReciveFunction receive_cb;
+};
+
+struct _PurpleHTTPConnection {
+    int fd;
+    char *host;
+    int port;
+    int handle;
+    PurpleConnection *conn;
+    PurpleAccount *account;
+    GQueue *requests;
+    
+    PurpleHTTPConnectionConnectFunction connect_cb;
+    void *userdata;
+};
 
 struct _PurpleHTTPRequest {
     PurpleHTTPRequestCallback cb;
@@ -55,21 +76,18 @@
 
 struct _PurpleHTTPResponse {
     int status;
-    GList *header;
+    GHashTable *header;
     char *data;
 };
 
-struct _PurpleHTTPHeaderField {
-    char *name;
-    char *value;
-};
+void jabber_bosh_connection_init(PurpleBOSHConnection *conn, PurpleAccount *account, char *url);
+void jabber_bosh_connection_connect(PurpleBOSHConnection *conn);
 
-PurpleHTTPHeaderField *jabber_bosh_http_header_field(const char *name, const char *value);
-
+void jabber_bosh_http_connection_init(PurpleHTTPConnection *conn, PurpleAccount *account, char *host, int port);
 void jabber_bosh_http_connection_connect(PurpleHTTPConnection *conn);
 void jabber_bosh_http_send_request(PurpleHTTPConnection *conn, PurpleHTTPRequest *req);
 void jabber_bosh_http_connection_clean(PurpleHTTPConnection *conn);
 
-void jabber_bosh_http_request_init(PurpleHTTPRequest *req, const char *method, const char *url, PurpleHTTPRequestCallback cb, void *userdata);
+void jabber_bosh_http_request_init(PurpleHTTPRequest *req, const char *method, const char *path, PurpleHTTPRequestCallback cb, void *userdata);
 void jabber_bosh_http_request_clean(PurpleHTTPRequest *req);
 #endif /* _PURPLE_JABBER_BOSH_H_ */