1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2000-2003, Ximian, Inc.
*/
#ifndef __SOUP_MESSAGE_PRIVATE_H__
#define __SOUP_MESSAGE_PRIVATE_H__ 1
#include "soup-message.h"
#include "soup-auth.h"
#include "soup-content-processor.h"
#include "soup-content-sniffer.h"
#include "soup-session.h"
typedef struct {
gpointer io_data;
SoupChunkAllocator chunk_allocator;
gpointer chunk_allocator_data;
GDestroyNotify chunk_allocator_dnotify;
guint msg_flags;
gboolean server_side;
SoupContentSniffer *sniffer;
gsize bytes_for_sniffing;
SoupHTTPVersion http_version, orig_http_version;
SoupURI *uri;
SoupAddress *addr;
SoupAuth *auth, *proxy_auth;
SoupConnection *connection;
GHashTable *disabled_features;
SoupURI *first_party;
SoupURI *site_for_cookies;
GTlsCertificate *tls_certificate;
GTlsCertificateFlags tls_errors;
SoupRequest *request;
SoupMessagePriority priority;
gboolean is_top_level_navigation;
} SoupMessagePrivate;
void soup_message_cleanup_response (SoupMessage *msg);
typedef enum {
SOUP_MESSAGE_IO_COMPLETE,
SOUP_MESSAGE_IO_INTERRUPTED,
SOUP_MESSAGE_IO_STOLEN
} SoupMessageIOCompletion;
typedef void (*SoupMessageGetHeadersFn) (SoupMessage *msg,
GString *headers,
SoupEncoding *encoding,
gpointer user_data);
typedef guint (*SoupMessageParseHeadersFn)(SoupMessage *msg,
char *headers,
guint header_len,
SoupEncoding *encoding,
gpointer user_data,
GError **error);
typedef void (*SoupMessageCompletionFn) (SoupMessage *msg,
SoupMessageIOCompletion completion,
gpointer user_data);
void soup_message_send_request (SoupMessageQueueItem *item,
SoupMessageCompletionFn completion_cb,
gpointer user_data);
void soup_message_read_request (SoupMessage *msg,
SoupSocket *sock,
gboolean use_thread_context,
SoupMessageCompletionFn completion_cb,
gpointer user_data);
void soup_message_io_client (SoupMessageQueueItem *item,
GIOStream *iostream,
GMainContext *async_context,
SoupMessageGetHeadersFn get_headers_cb,
SoupMessageParseHeadersFn parse_headers_cb,
gpointer headers_data,
SoupMessageCompletionFn completion_cb,
gpointer user_data);
void soup_message_io_server (SoupMessage *msg,
GIOStream *iostream,
GMainContext *async_context,
SoupMessageGetHeadersFn get_headers_cb,
SoupMessageParseHeadersFn parse_headers_cb,
gpointer headers_data,
SoupMessageCompletionFn completion_cb,
gpointer user_data);
/* Auth handling */
void soup_message_set_auth (SoupMessage *msg,
SoupAuth *auth);
SoupAuth *soup_message_get_auth (SoupMessage *msg);
void soup_message_set_proxy_auth (SoupMessage *msg,
SoupAuth *auth);
SoupAuth *soup_message_get_proxy_auth (SoupMessage *msg);
/* I/O */
void soup_message_io_stop (SoupMessage *msg);
void soup_message_io_finished (SoupMessage *msg);
/* This is supposed to be private, but there are programs that rely on it
* being exported. See bug #687758, #687468.
*/
SOUP_AVAILABLE_IN_2_4
void soup_message_io_cleanup (SoupMessage *msg);
void soup_message_io_pause (SoupMessage *msg);
void soup_message_io_unpause (SoupMessage *msg);
gboolean soup_message_io_in_progress (SoupMessage *msg);
GIOStream *soup_message_io_steal (SoupMessage *msg);
gboolean soup_message_io_run_until_write (SoupMessage *msg,
gboolean blocking,
GCancellable *cancellable,
GError **error);
gboolean soup_message_io_run_until_read (SoupMessage *msg,
gboolean blocking,
GCancellable *cancellable,
GError **error);
gboolean soup_message_io_run_until_finish (SoupMessage *msg,
gboolean blocking,
GCancellable *cancellable,
GError **error);
typedef gboolean (*SoupMessageSourceFunc) (SoupMessage *, gpointer);
GSource *soup_message_io_get_source (SoupMessage *msg,
GCancellable *cancellable,
SoupMessageSourceFunc callback,
gpointer user_data);
GInputStream *soup_message_io_get_response_istream (SoupMessage *msg,
GError **error);
gboolean soup_message_disables_feature (SoupMessage *msg,
gpointer feature);
GList *soup_message_get_disabled_features (SoupMessage *msg);
void soup_message_set_https_status (SoupMessage *msg,
SoupConnection *conn);
void soup_message_network_event (SoupMessage *msg,
GSocketClientEvent event,
GIOStream *connection);
GInputStream *soup_message_setup_body_istream (GInputStream *body_stream,
SoupMessage *msg,
SoupSession *session,
SoupProcessingStage start_at_stage);
void soup_message_set_soup_request (SoupMessage *msg,
SoupRequest *req);
SoupConnection *soup_message_get_connection (SoupMessage *msg);
void soup_message_set_connection (SoupMessage *msg,
SoupConnection *conn);
gpointer soup_message_get_io_data (SoupMessage *msg);
void soup_message_set_io_data (SoupMessage *msg,
gpointer io);
SoupContentSniffer *soup_message_get_content_sniffer (SoupMessage *msg);
void soup_message_set_content_sniffer (SoupMessage *msg,
SoupContentSniffer *sniffer);
void soup_message_set_bytes_for_sniffing (SoupMessage *msg,
gsize bytes);
gboolean soup_message_has_chunk_allocator (SoupMessage *msg);
SoupBuffer *soup_message_allocate_chunk (SoupMessage *msg,
goffset read_length);
#endif /* __SOUP_MESSAGE_PRIVATE_H__ */
|