icd/icd_request.h

Go to the documentation of this file.
00001 #ifndef ICD_REQUEST_H
00002 #define ICD_REQUEST_H
00003 
00016 #include <dbus/dbus.h>
00017 #include <glib.h>
00018 #include "policy_api.h"
00019 #include "icd_tracking_info.h"
00020 #include "icd_iap.h"
00021 
00023 enum icd_request_status {
00025   ICD_REQUEST_POLICY_PENDING = 0,
00028   ICD_REQUEST_WAITING,
00030   ICD_REQUEST_CHANGETO,
00032   ICD_REQUEST_MERGED,
00034   ICD_REQUEST_CONNECTING_IAPS,
00036   ICD_REQUEST_SUCCEEDED,
00038   ICD_REQUEST_DENIED,
00041   ICD_REQUEST_DISCONNECTED,
00042 
00044   ICD_REQUEST_MAX
00045 };
00046 
00051 typedef void (*icd_request_cb_fn) (enum icd_request_status status,
00052                                    gpointer user_data);
00053 
00056 struct icd_request {
00058   enum icd_request_status state;
00060   GSList *users;
00063   gboolean multi_iaps;
00065   GSList *try_iaps;
00067   struct icd_policy_request req;
00068 };
00069 
00076 typedef gpointer (*icd_request_foreach_fn) (struct icd_request *request,
00077                                             gpointer user_data);
00078 
00079 gpointer icd_request_foreach (icd_request_foreach_fn fn,
00080                               gpointer user_data);
00081 void icd_request_free_iaps (struct icd_request *request);
00082 struct icd_request *icd_request_find (const gchar *network_type,
00083                                       const guint network_attrs,
00084                                       const gchar *network_id);
00085 struct icd_request *icd_request_find_by_iap (const gchar *network_type,
00086                                              const guint network_attrs,
00087                                              const gchar *network_id);
00088 struct icd_request *icd_request_find_by_iap_id (const gchar *iap_id,
00089                                                 const gboolean is_local);
00090 void icd_request_send_ack (struct icd_request *request,
00091                            struct icd_iap *iap);
00092 void icd_request_send_nack (struct icd_request *request);
00093 void icd_request_add_iap (struct icd_request *request,
00094                           gchar *service_type,
00095                           guint service_attrs,
00096                           gchar *service_id,
00097                           gchar *network_type,
00098                           guint network_attrs,
00099                           gchar *network_id,
00100                           gint network_priority);
00101 struct icd_request *icd_request_new (guint policy_attrs,
00102                                      const gchar *service_type,
00103                                      const guint service_attrs,
00104                                      const gchar *service_id,
00105                                      const gchar *network_type,
00106                                      const guint network_attrs,
00107                                      const gchar *network_id);
00108 void icd_request_make (struct icd_request *request);
00109 gboolean icd_request_merge (struct icd_request *merge_request,
00110                             struct icd_request *existing);
00111 void icd_request_cancel (struct icd_request *request, guint policy_attrs);
00112 void icd_request_tracking_info_remove (struct icd_request *request,
00113                                        struct icd_tracking_info *track);
00114 gboolean icd_request_tracking_info_delete (const gchar *sender);
00115 void icd_request_tracking_info_add (struct icd_request *request,
00116                                     struct icd_tracking_info *track);
00117 
00118 
00121 #endif

Generated on Tue Feb 24 16:21:36 2009 for ICd2 by  doxygen 1.5.1