Git init
[profile/ivi/libsoup2.4.git] / libsoup / soup-session-feature.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2008 Red Hat, Inc.
4  */
5
6 #ifndef SOUP_SESSION_FEATURE_H
7 #define SOUP_SESSION_FEATURE_H 1
8
9 #include <libsoup/soup-types.h>
10
11 G_BEGIN_DECLS
12
13 #define SOUP_TYPE_SESSION_FEATURE            (soup_session_feature_get_type ())
14 #define SOUP_SESSION_FEATURE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeature))
15 #define SOUP_SESSION_FEATURE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeatureInterface))
16 #define SOUP_IS_SESSION_FEATURE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SESSION_FEATURE))
17 #define SOUP_IS_SESSION_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_SESSION_FEATURE))
18 #define SOUP_SESSION_FEATURE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeatureInterface))
19
20 typedef struct {
21         GTypeInterface parent;
22
23         /* methods */
24         void     (*attach)           (SoupSessionFeature *feature,
25                                       SoupSession        *session);
26         void     (*detach)           (SoupSessionFeature *feature,
27                                       SoupSession        *session);
28
29         void     (*request_queued)   (SoupSessionFeature *feature,
30                                       SoupSession        *session,
31                                       SoupMessage        *msg);
32         void     (*request_started)  (SoupSessionFeature *feature,
33                                       SoupSession        *session,
34                                       SoupMessage        *msg,
35                                       SoupSocket         *socket);
36         void     (*request_unqueued) (SoupSessionFeature *feature,
37                                       SoupSession        *session,
38                                       SoupMessage        *msg);
39
40         gboolean (*add_feature)      (SoupSessionFeature *feature,
41                                       GType               type);
42         gboolean (*remove_feature)   (SoupSessionFeature *feature,
43                                       GType               type);
44         gboolean (*has_feature)      (SoupSessionFeature *feature,
45                                       GType               type);
46
47 } SoupSessionFeatureInterface;
48
49 GType    soup_session_feature_get_type       (void);
50
51 void     soup_session_feature_attach         (SoupSessionFeature *feature,
52                                               SoupSession        *session);
53 void     soup_session_feature_detach         (SoupSessionFeature *feature,
54                                               SoupSession        *session);
55
56 gboolean soup_session_feature_add_feature    (SoupSessionFeature *feature,
57                                               GType               type);
58 gboolean soup_session_feature_remove_feature (SoupSessionFeature *feature,
59                                               GType               type);
60 gboolean soup_session_feature_has_feature    (SoupSessionFeature *feature,
61                                               GType               type);
62
63 G_END_DECLS
64
65 #endif /* SOUP_SESSION_FEATURE_H */