Git init
[profile/ivi/libsoup2.4.git] / libsoup / soup-message-queue.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2003 Novell, Inc.
4  * Copyright (C) 2008 Red Hat, Inc.
5  */
6
7 #ifndef SOUP_MESSAGE_QUEUE_H
8 #define SOUP_MESSAGE_QUEUE_H 1
9
10 #include "soup-connection.h"
11 #include "soup-message.h"
12 #include "soup-session.h"
13
14 G_BEGIN_DECLS
15
16 typedef enum {
17         SOUP_MESSAGE_STARTING,
18         SOUP_MESSAGE_RESOLVING_PROXY_URI,
19         SOUP_MESSAGE_RESOLVED_PROXY_URI,
20         SOUP_MESSAGE_RESOLVING_PROXY_ADDRESS,
21         SOUP_MESSAGE_RESOLVED_PROXY_ADDRESS,
22         SOUP_MESSAGE_AWAITING_CONNECTION,
23         SOUP_MESSAGE_GOT_CONNECTION,
24         SOUP_MESSAGE_CONNECTING,
25         SOUP_MESSAGE_CONNECTED,
26         SOUP_MESSAGE_TUNNELING,
27         SOUP_MESSAGE_TUNNELED,
28         SOUP_MESSAGE_READY,
29         SOUP_MESSAGE_RUNNING,
30         SOUP_MESSAGE_RESTARTING,
31         SOUP_MESSAGE_FINISHING,
32         SOUP_MESSAGE_FINISHED
33 } SoupMessageQueueItemState;
34
35 struct _SoupMessageQueueItem {
36         /*< public >*/
37         SoupSession *session;
38         SoupMessageQueue *queue;
39         SoupMessage *msg;
40         SoupSessionCallback callback;
41         gpointer callback_data;
42
43         GCancellable *cancellable;
44         SoupAddress *proxy_addr;
45         SoupURI *proxy_uri;
46         SoupConnection *conn;
47
48         guint redirection_count;
49
50         SoupMessageQueueItemState state;
51
52         /*< private >*/
53         guint removed              : 1;
54         guint ref_count            : 31;
55         SoupMessageQueueItem *prev, *next;
56         SoupMessageQueueItem *related;
57 };
58
59 SoupMessageQueue     *soup_message_queue_new        (SoupSession          *session);
60 SoupMessageQueueItem *soup_message_queue_append     (SoupMessageQueue     *queue,
61                                                      SoupMessage          *msg,
62                                                      SoupSessionCallback   callback,
63                                                      gpointer              user_data);
64
65 SoupMessageQueueItem *soup_message_queue_lookup     (SoupMessageQueue     *queue,
66                                                      SoupMessage          *msg);
67
68 SoupMessageQueueItem *soup_message_queue_first      (SoupMessageQueue     *queue);
69 SoupMessageQueueItem *soup_message_queue_next       (SoupMessageQueue     *queue,
70                                                      SoupMessageQueueItem *item);
71
72 void                  soup_message_queue_remove     (SoupMessageQueue     *queue,
73                                                      SoupMessageQueueItem *item);
74
75 void                  soup_message_queue_item_ref   (SoupMessageQueueItem *item);
76 void                  soup_message_queue_item_unref (SoupMessageQueueItem *item);
77
78 void                  soup_message_queue_destroy    (SoupMessageQueue     *queue);
79
80
81 G_END_DECLS
82
83 #endif /* SOUP_MESSAGE_QUEUE_H */