Git init
[profile/ivi/libsoup2.4.git] / libsoup / soup-address.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2000-2003, Ximian, Inc.
4  */
5
6 #ifndef SOUP_ADDRESS_H
7 #define SOUP_ADDRESS_H
8
9 #include <sys/types.h>
10
11 #include <libsoup/soup-portability.h>
12 #include <libsoup/soup-types.h>
13
14 G_BEGIN_DECLS
15
16 #define SOUP_TYPE_ADDRESS            (soup_address_get_type ())
17 #define SOUP_ADDRESS(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_ADDRESS, SoupAddress))
18 #define SOUP_ADDRESS_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_ADDRESS, SoupAddressClass))
19 #define SOUP_IS_ADDRESS(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_ADDRESS))
20 #define SOUP_IS_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_ADDRESS))
21 #define SOUP_ADDRESS_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_ADDRESS, SoupAddressClass))
22
23 struct _SoupAddress {
24         GObject parent;
25
26 };
27
28 typedef struct {
29         GObjectClass parent_class;
30
31         /* Padding for future expansion */
32         void (*_libsoup_reserved1) (void);
33         void (*_libsoup_reserved2) (void);
34         void (*_libsoup_reserved3) (void);
35         void (*_libsoup_reserved4) (void);
36 } SoupAddressClass;
37
38 #define SOUP_ADDRESS_NAME     "name"
39 #define SOUP_ADDRESS_FAMILY   "family"
40 #define SOUP_ADDRESS_PORT     "port"
41 #define SOUP_ADDRESS_PHYSICAL "physical"
42 #define SOUP_ADDRESS_SOCKADDR "sockaddr"
43
44 typedef enum {
45         SOUP_ADDRESS_FAMILY_INVALID = -1,
46
47         SOUP_ADDRESS_FAMILY_IPV4 = G_SOCKET_FAMILY_IPV4,
48         SOUP_ADDRESS_FAMILY_IPV6 = G_SOCKET_FAMILY_IPV6
49 } SoupAddressFamily;
50
51 #define SOUP_ADDRESS_ANY_PORT 0
52
53 typedef void   (*SoupAddressCallback)            (SoupAddress         *addr,
54                                                   guint                status,
55                                                   gpointer             user_data);
56
57 GType soup_address_get_type (void);
58
59 SoupAddress     *soup_address_new                (const char          *name,
60                                                   guint                port);
61 SoupAddress     *soup_address_new_from_sockaddr  (struct sockaddr     *sa,
62                                                   int                  len);
63 SoupAddress     *soup_address_new_any            (SoupAddressFamily    family,
64                                                   guint                port);
65
66 void             soup_address_resolve_async      (SoupAddress         *addr,
67                                                   GMainContext        *async_context,
68                                                   GCancellable        *cancellable,
69                                                   SoupAddressCallback  callback,
70                                                   gpointer             user_data);
71 guint            soup_address_resolve_sync       (SoupAddress         *addr,
72                                                   GCancellable        *cancellable);
73
74 const char      *soup_address_get_name           (SoupAddress         *addr);
75 const char      *soup_address_get_physical       (SoupAddress         *addr);
76 guint            soup_address_get_port           (SoupAddress         *addr);
77 struct sockaddr *soup_address_get_sockaddr       (SoupAddress         *addr,
78                                                   int                 *len);
79 GSocketAddress  *soup_address_get_gsockaddr      (SoupAddress         *addr);
80 gboolean         soup_address_is_resolved        (SoupAddress         *addr);
81
82 guint            soup_address_hash_by_name       (gconstpointer        addr);
83 gboolean         soup_address_equal_by_name      (gconstpointer        addr1,
84                                                   gconstpointer        addr2);
85 guint            soup_address_hash_by_ip         (gconstpointer        addr);
86 gboolean         soup_address_equal_by_ip        (gconstpointer        addr1,
87                                                   gconstpointer        addr2);
88
89
90 G_END_DECLS
91
92 #endif /* SOUP_ADDRESS_H */