New. An interface for objects that want to act on every message passing
[platform/upstream/libsoup.git] / libsoup / soup-session.h
index 1a61d86..8e5be50 100644 (file)
@@ -6,7 +6,9 @@
 #ifndef SOUP_SESSION_H
 #define SOUP_SESSION_H 1
 
+#include <libsoup/soup-types.h>
 #include <libsoup/soup-message.h>
+#include <libsoup/soup-message-queue.h>
 
 #define SOUP_TYPE_SESSION            (soup_session_get_type ())
 #define SOUP_SESSION(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SESSION, SoupSession))
 
 typedef struct SoupSessionPrivate SoupSessionPrivate;
 
-typedef struct {
+struct SoupSession {
        GObject parent;
 
        SoupSessionPrivate *priv;
-} SoupSession;
+
+       /* protected */
+       SoupMessageQueue *queue;
+};
 
 typedef struct {
        GObjectClass parent_class;
 
+       /* signals */
+       void (*authenticate)   (SoupSession *, SoupMessage *,
+                               const char *auth_type, const char *auth_realm,
+                               char **username, char **password);
+       void (*reauthenticate) (SoupSession *, SoupMessage *,
+                               const char *auth_type, const char *auth_realm,
+                               char **username, char **password);
+
+       /* methods */
+       void  (*queue_message)   (SoupSession *session, SoupMessage *msg,
+                                 SoupMessageCallbackFn callback,
+                                 gpointer user_data);
+       void  (*requeue_message) (SoupSession *session, SoupMessage *msg);
+       guint (*send_message)    (SoupSession *session, SoupMessage *msg);
+
+       void  (*cancel_message)  (SoupSession *session, SoupMessage *msg);
+
 } SoupSessionClass;
 
 GType soup_session_get_type (void);
 
-SoupSession    *soup_session_new             (void);
+#define SOUP_SESSION_PROXY_URI          "proxy-uri"
+#define SOUP_SESSION_MAX_CONNS          "max-conns"
+#define SOUP_SESSION_MAX_CONNS_PER_HOST "max-conns-per-host"
+#define SOUP_SESSION_USE_NTLM           "use-ntlm"
+#define SOUP_SESSION_SSL_CA_FILE        "ssl-ca-file"
+
+void            soup_session_add_filter       (SoupSession           *session,
+                                              SoupMessageFilter     *filter);
+void            soup_session_remove_filter    (SoupSession           *session,
+                                              SoupMessageFilter     *filter);
+
+void            soup_session_queue_message    (SoupSession           *session,
+                                              SoupMessage           *msg,
+                                              SoupMessageCallbackFn  callback,
+                                              gpointer               user_data);
+void            soup_session_requeue_message  (SoupSession           *session,
+                                              SoupMessage           *msg);
+
+guint           soup_session_send_message     (SoupSession           *session,
+                                              SoupMessage           *msg);
+
+void            soup_session_cancel_message   (SoupSession           *session,
+                                              SoupMessage           *msg);
+void            soup_session_abort            (SoupSession           *session);
 
-void            soup_session_queue_message   (SoupSession           *session,
-                                             SoupMessage           *req,
-                                             SoupMessageCallbackFn  callback,
-                                             gpointer               user_data);
-void            soup_session_requeue_message (SoupSession           *session,
-                                             SoupMessage           *req);
 
-guint           soup_session_send_message    (SoupSession           *session,
-                                             SoupMessage            *req);
+/* Protected methods */
+SoupConnection *soup_session_get_connection       (SoupSession    *session,
+                                                  SoupMessage    *msg,
+                                                  gboolean       *try_pruning,
+                                                  gboolean       *is_new);
+gboolean        soup_session_try_prune_connection (SoupSession    *session);
 
 
 #endif /* SOUP_SESSION_H */