1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2000-2003, Ximian, Inc.
4  */
5 
6 #ifndef __SOUP_CONNECTION_H__
7 #define __SOUP_CONNECTION_H__ 1
8 
9 #include "soup-types.h"
10 #include "soup-message-private.h"
11 #include "soup-misc.h"
12 
13 G_BEGIN_DECLS
14 
15 #define SOUP_TYPE_CONNECTION (soup_connection_get_type ())
16 G_DECLARE_FINAL_TYPE (SoupConnection, soup_connection, SOUP, CONNECTION, GObject)
17 
18 typedef enum {
19 	SOUP_CONNECTION_NEW,
20 	SOUP_CONNECTION_CONNECTING,
21 	SOUP_CONNECTION_IDLE,
22 	SOUP_CONNECTION_IN_USE,
23 	SOUP_CONNECTION_DISCONNECTED
24 } SoupConnectionState;
25 
26 void            soup_connection_connect_async    (SoupConnection       *conn,
27 						  int                   io_priority,
28 						  GCancellable         *cancellable,
29 						  GAsyncReadyCallback   callback,
30 						  gpointer              user_data);
31 gboolean        soup_connection_connect_finish   (SoupConnection       *conn,
32 						  GAsyncResult         *result,
33 						  GError              **error);
34 gboolean        soup_connection_connect          (SoupConnection       *conn,
35 						  GCancellable         *cancellable,
36 						  GError              **error);
37 void            soup_connection_tunnel_handshake_async  (SoupConnection     *conn,
38 							 int                 io_priority,
39 							 GCancellable       *cancellable,
40 							 GAsyncReadyCallback callback,
41 							 gpointer            user_data);
42 gboolean        soup_connection_tunnel_handshake_finish (SoupConnection *conn,
43 							 GAsyncResult   *result,
44 							 GError        **error);
45 gboolean        soup_connection_tunnel_handshake        (SoupConnection *conn,
46 							 GCancellable   *cancellable,
47 							 GError        **error);
48 void            soup_connection_disconnect     (SoupConnection   *conn);
49 
50 GSocket        *soup_connection_get_socket     (SoupConnection   *conn);
51 GIOStream      *soup_connection_get_iostream   (SoupConnection   *conn);
52 GIOStream      *soup_connection_steal_iostream (SoupConnection   *conn);
53 GUri           *soup_connection_get_remote_uri (SoupConnection   *conn);
54 GUri           *soup_connection_get_proxy_uri  (SoupConnection   *conn);
55 gboolean        soup_connection_is_via_proxy   (SoupConnection   *conn);
56 gboolean        soup_connection_is_tunnelled   (SoupConnection   *conn);
57 
58 SoupConnectionState soup_connection_get_state  (SoupConnection   *conn);
59 void            soup_connection_set_in_use     (SoupConnection   *conn,
60                                                 gboolean          in_use);
61 gboolean        soup_connection_is_idle_open   (SoupConnection   *conn);
62 
63 SoupClientMessageIO *soup_connection_setup_message_io    (SoupConnection *conn,
64                                                           SoupMessage    *msg);
65 
66 GTlsCertificate     *soup_connection_get_tls_certificate                       (SoupConnection  *conn);
67 GTlsCertificateFlags soup_connection_get_tls_certificate_errors                (SoupConnection  *conn);
68 GTlsProtocolVersion  soup_connection_get_tls_protocol_version                  (SoupConnection  *conn);
69 char                *soup_connection_get_tls_ciphersuite_name                  (SoupConnection  *conn);
70 void                 soup_connection_request_tls_certificate                   (SoupConnection  *conn,
71                                                                                 GTlsConnection  *connection,
72                                                                                 GTask           *task);
73 void                 soup_connection_complete_tls_certificate_request          (SoupConnection  *conn,
74                                                                                 GTlsCertificate *certificate,
75                                                                                 GTask           *task);
76 void                 soup_connection_set_tls_client_certificate                (SoupConnection  *conn,
77                                                                                 GTlsCertificate *certificate);
78 void                 soup_connection_request_tls_certificate_password          (SoupConnection  *conn,
79                                                                                 GTlsPassword    *password,
80                                                                                 GTask           *task);
81 void                 soup_connection_complete_tls_certificate_password_request (SoupConnection  *conn,
82                                                                                 GTask           *task);
83 
84 guint64              soup_connection_get_id                     (SoupConnection *conn);
85 GSocketAddress      *soup_connection_get_remote_address         (SoupConnection *conn);
86 SoupHTTPVersion      soup_connection_get_negotiated_protocol    (SoupConnection *conn);
87 gboolean             soup_connection_is_reusable                (SoupConnection *conn);
88 
89 G_END_DECLS
90 
91 #endif /* __SOUP_CONNECTION_H__ */
92