#include "pa_mod.h"

typedef struct _offline_winfo_t {
	time_t created; /* date and time of this info creation */
	time_t expires; /* date and time of this info expiration */
	int index;      /* key generated by database - it is used for removing winfos from DB */
	str uid;     /* presentity identification */
	str watcher; /* watcher's uri */
	str events;  /* event package */
	str domain;  /* domain */
	str status;  /* status of subscription */
	struct _offline_winfo_t *next; /* for linking infos together */
	char buffer[1];
} offline_winfo_t;

int store_offline_winfo(struct sip_msg* _m, char* _domain, char* _str);
/* send offline winfo as regular watcher info NOTIFY if possible 
 * (for presentity got from get_to) */
int dump_offline_winfo(struct sip_msg* _m, char* _domain, char* _s2);

/* expiration time in seconds */
extern int offline_winfo_expiration;

void offline_winfo_timer(unsigned int ticks, void* param);

int send_winfo_notify_offline(struct presentity* _p, 
		struct watcher* _w, 
		offline_winfo_t *info, 
		transaction_cb completion_cb, void* cbp);

/* For storing status of last subscription is used global variable,
 * NOT AVP because AVPs are cleared when sending NOTIFY request from
 * handle_subscripton function and behaviour of AVPs in such cases is
 * not strictly defined. */

void set_last_subscription_status(watcher_status_t status);
watcher_status_t get_last_subscription_status();

int check_subscription_status(struct sip_msg* _m, char* _status, char* _x);
int check_subscription_status_fix(void **param, int param_no);