00001 #ifndef PEER_H
00002 #define PEER_H
00003
00004 #include <string.h>
00005 #include <stdlib.h>
00006 #include "../../lock_ops.h"
00007 #include "../../str.h"
00008 #include "../../mem/mem.h"
00009 #include "../../mem/shm_mem.h"
00010 #include "../../parser/msg_parser.h"
00011
00012 typedef struct peer_response {
00013 int resp_code;
00014 str content_type;
00015 str reason;
00016 str body;
00017 } peer_reponse_t;
00018
00019 typedef int(*peer_callback_t)(struct sip_msg*, peer_reponse_t* resp);
00020
00021 typedef struct dmq_peer {
00022 str peer_id;
00023 str description;
00024 peer_callback_t callback;
00025 struct dmq_peer* next;
00026 } dmq_peer_t;
00027
00028 typedef struct dmq_peer_list {
00029 gen_lock_t lock;
00030 dmq_peer_t* peers;
00031 int count;
00032 } dmq_peer_list_t;
00033
00034 extern dmq_peer_list_t* peer_list;
00035
00036 dmq_peer_list_t* init_peer_list();
00037 dmq_peer_t* search_peer_list(dmq_peer_list_t* peer_list, dmq_peer_t* peer);
00038 typedef dmq_peer_t* (*register_dmq_peer_t)(dmq_peer_t*);
00039
00040 dmq_peer_t* add_peer(dmq_peer_list_t* peer_list, dmq_peer_t* peer);
00041 dmq_peer_t* find_peer(str peer_id);
00042 int empty_peer_callback(struct sip_msg* msg, peer_reponse_t* resp);
00043
00044 #endif
00045