1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright 2011-2014 Red Hat, Inc.
4  */
5 
6 #ifndef __SOUP_SOCKET_PRIVATE_H__
7 #define __SOUP_SOCKET_PRIVATE_H__ 1
8 
9 #include "soup-socket.h"
10 
11 #define SOUP_SOCKET_SOCKET_PROPERTIES "socket-properties"
12 #define SOUP_SOCKET_FD                "fd"
13 #define SOUP_SOCKET_GSOCKET           "gsocket"
14 #define SOUP_SOCKET_IOSTREAM          "iostream"
15 #define SOUP_SOCKET_IPV6_ONLY         "ipv6-only"
16 
17 gboolean   soup_socket_connect_sync_internal   (SoupSocket           *sock,
18 						GCancellable         *cancellable,
19 						GError              **error);
20 void       soup_socket_connect_async_internal  (SoupSocket           *sock,
21 						GCancellable         *cancellable,
22 						GAsyncReadyCallback   callback,
23 						gpointer              user_data);
24 gboolean   soup_socket_connect_finish_internal (SoupSocket           *sock,
25 						GAsyncResult         *result,
26 						GError              **error);
27 
28 gboolean   soup_socket_handshake_sync          (SoupSocket           *sock,
29 						const char           *host,
30 						GCancellable         *cancellable,
31 						GError              **error);
32 void       soup_socket_handshake_async         (SoupSocket           *sock,
33 						const char           *host,
34 						GCancellable         *cancellable,
35 						GAsyncReadyCallback   callback,
36 						gpointer              user_data);
37 gboolean   soup_socket_handshake_finish        (SoupSocket           *sock,
38 						GAsyncResult         *result,
39 						GError              **error);
40 
41 GSocket   *soup_socket_get_gsocket             (SoupSocket           *sock);
42 GSocket   *soup_socket_steal_gsocket           (SoupSocket           *sock);
43 GIOStream *soup_socket_get_connection          (SoupSocket           *sock);
44 GIOStream *soup_socket_get_iostream            (SoupSocket           *sock);
45 
46 SoupURI   *soup_socket_get_http_proxy_uri      (SoupSocket           *sock);
47 
48 gboolean   soup_socket_listen_full             (SoupSocket           *sock,
49                                                 GError              **error);
50 
51 
52 
53 typedef struct {
54 	GMainContext *async_context;
55 	gboolean use_thread_context;
56 
57 	GProxyResolver *proxy_resolver;
58 	SoupAddress *local_addr;
59 
60 	GTlsDatabase *tlsdb;
61 	GTlsInteraction *tls_interaction;
62 	gboolean ssl_strict;
63 
64 	guint io_timeout;
65 	guint idle_timeout;
66 
67 	/*< private >*/
68 	guint ref_count;
69 } SoupSocketProperties;
70 
71 GType soup_socket_properties_get_type (void);
72 #define SOUP_TYPE_SOCKET_PROPERTIES (soup_socket_properties_get_type ())
73 
74 SoupSocketProperties *soup_socket_properties_new   (GMainContext    *async_context,
75 						    gboolean         use_thread_context,
76 						    GProxyResolver  *proxy_resolver,
77 						    SoupAddress     *local_addr,
78 						    GTlsDatabase    *tlsdb,
79 						    GTlsInteraction *tls_interaction,
80 						    gboolean         ssl_strict,
81 						    guint            io_timeout,
82 						    guint            idle_timeout);
83 
84 SoupSocketProperties *soup_socket_properties_ref   (SoupSocketProperties *props);
85 void                  soup_socket_properties_unref (SoupSocketProperties *props);
86 
87 void soup_socket_properties_push_async_context (SoupSocketProperties *props);
88 void soup_socket_properties_pop_async_context  (SoupSocketProperties *props);
89 
90 #endif /* __SOUP_SOCKET_PRIVATE_H__ */
91