00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __NOTIFIER_H
00027 #define __NOTIFIER_H
00028
00029
00030
00031 #include <presence/notifier_domain.h>
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037
00038 notifier_t *register_notifier(
00039 notifier_domain_t *domain,
00040 const str_t *package,
00041 server_subscribe_func subscribe,
00042 server_unsubscribe_func unsubscribe,
00043 void *user_data);
00044
00045 void unregister_notifier(notifier_domain_t *domain, notifier_t *info);
00046
00054 void accept_subscription(qsa_subscription_t *s);
00055
00060 void release_subscription(qsa_subscription_t *s);
00061
00066 typedef enum {
00067 qsa_subscription_active,
00068 qsa_subscription_pending,
00069 qsa_subscription_terminated,
00070 qsa_subscription_rejected
00071 } qsa_subscription_status_t;
00072
00073 typedef struct {
00074
00075 qsa_subscription_t *subscription;
00076 qsa_content_type_t *content_type;
00077 void *data;
00078 int data_len;
00079 qsa_subscription_status_t status;
00080 } client_notify_info_t;
00081
00082
00083 void free_client_notify_info_content(client_notify_info_t *info);
00084
00085
00086 int notify_subscriber(qsa_subscription_t *s,
00087 notifier_t *n,
00088 qsa_content_type_t *content_type,
00089 void *data,
00090 qsa_subscription_status_t status);
00091
00092
00093
00094 str_t *get_subscriber_id(qsa_subscription_t *s);
00095
00096
00097
00098 str_t *get_record_id(qsa_subscription_t *s);
00099
00100
00101
00102 void *get_subscriber_data(qsa_subscription_t *s);
00103
00104 #ifdef __cplusplus
00105 }
00106 #endif
00107
00108 #endif