peer.h

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