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 /****************************** Structures list *******************************/ 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 /****************************** Functions list ********************************/ 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 /* _SS_SUBSCRIBE_H */