00001
00033 #include <stdio.h>
00034 #include "utils/list.h"
00035 #include "utils/kp_bool.h"
00036 #include "kpi_low.h"
00037 #include "structures.h"
00038
00039
00040 #ifndef _SS_SUBSCRIBE_H
00041 #define _SS_SUBSCRIBE_H
00042
00043
00044
00045
00046
00048
00050 typedef struct subscription_data_s {
00051 individual_t *ind;
00052 list_t *properties;
00053 } subscription_data_t;
00054
00056
00057
00059
00061 typedef struct subscription_container_s {
00062 int rtti;
00063 list_t *sbrc_data;
00064 int subscription_id;
00065 int subscription_type;
00066 void (*callback)(struct subscription_container_s*, list_t*);
00067 bool is_updated;
00068 ss_subs_info_t info;
00070 } subscription_container_t;
00071
00073
00074
00075
00076
00078
00079 subscription_container_t* new_subscription_container();
00080 void free_subscription_container(subscription_container_t *container);
00081
00082
00083 int add_individual_to_subscription_container(subscription_container_t *container,
00084 individual_t *ind, list_t *properties);
00085 void set_subscription_container_callback(subscription_container_t *container,
00086 void (*func)(subscription_container_t *, list_t *));
00087
00088 int ss_subscribe_container(subscription_container_t *container, bool is_asynchronous);
00089 int wait_subscribe(subscription_container_t *container);
00090 int ss_unsubscribe_container(subscription_container_t *container);
00091 void stop_all_subscriptions();
00092
00094
00095
00096
00098
00099 subscription_data_t* new_subscription_data(individual_t *ind, list_t *properties);
00100 void free_subscription_data(subscription_data_t *data, bool free_prop_list);
00101
00102
00104
00105
00106 #endif