#ifndef __EUAC_FUNCS_H
 #define __EUAC_FUNCS_H
 #include "events_uac.h"
 /* manipulation with message */
 void extract_contact(struct sip_msg *m, str *dst);
 /* creating/recreating subscriptions 
  * if failover_time > 0 it calls euac_set_timer to this value 
  * noth these functions returns nonzero on error - this MUST
  * be handled everywhere */
 int new_subscription(events_uac_t *uac, str *contact_to_send, int failover_time);
 int renew_subscription(events_uac_t *uac, int expires, int failover_time);
 /* */
 events_uac_t *find_euac_nolock(struct sip_msg *m);
 void euac_set_timer(events_uac_t *uac, int seconds);
 void euac_clear_timer(events_uac_t *uac);
 int remove_euac_reference_nolock(events_uac_t *uac);
 void remove_uac_from_list(events_uac_t *uac);
 void insert_uac_to_list(events_uac_t *uac);
 /* processing NOTIFY requests (always sends OK response) */
 void do_notification(events_uac_t *uac, struct sip_msg *m);
 void discard_notification(events_uac_t *uac, struct sip_msg *m, int res_code, char *msg);
 void refresh_dialog(events_uac_t *uac, struct sip_msg *m);
 void refresh_dialog_resp(events_uac_t *uac, struct sip_msg *m);
 /* waiting time after error (before new attempt about subscription) */
 extern int resubscribe_timeout_on_err; 
 /* time specifying how long wait for terminating NOTIFY
  * after 2xx response on SUBSCRIBE with 0 expires*/
 extern int waiting_for_notify_time; 
 /* default subscription duration */
 extern int subscribe_time;
 /* time interval before expiration when should be the subscription refreshed
  * (recommended are some seconds before) */
 extern int resubscribe_delta;
 /* minimum time for resubscriptions */
 extern int min_resubscribe_time;
 extern int failover_timeout;
 /* for randomized start of subscriptions */
 extern int max_subscribe_delay;