amiws  2.2.1
 All Classes Files Functions Variables Enumerations Macros
amipack.h
1 
30 #ifndef __AMIP_H
31 #define __AMIP_H
32 
33 #include <stdlib.h>
34 #include <string.h>
35 
40 #define amipack_length(pack) (pack)->length + 2
41 
43 #define amipack_type(pack, ptype) (pack)->type = ptype
44 
46 #define amipack_size(pack) (pack)->size
47 
49 #define amipack_append_action(pack, val, len) amipack_append((pack), strdup("Action"), 6, val, len)
50 
52 enum pack_type {
53  AMI_UNKNOWN,
54  AMI_PROMPT,
55  AMI_ACTION,
56  AMI_EVENT,
57  AMI_RESPONSE,
58  AMI_RESPCMD,
59  AMI_QUEUE
60 };
61 
65 typedef struct AMIVer_ {
66  unsigned short major;
67  unsigned short minor;
68  unsigned short patch;
69 } AMIVer;
70 
74 typedef struct AMIHeader_ {
75 
76  char *name;
77  size_t name_size;
78  char *value;
79  size_t value_size;
81  struct AMIHeader_ *next;
83 } AMIHeader;
84 
89 typedef struct AMIQueue_ {
90  char *name;
91  int calls;
92  int maxlen;
93  char *strategy;
94  int holdtime;
95  int talktime;
96  int weight;
97  int callscompleted;
98  int callsabandoned;
99  char *sl;
100  int sl_sec;
101  int members_size;
102  int callers_size;
103 
104 } AMIQueue;
105 
109 typedef struct AMIPacket_ {
110 
111  int size;
113  int sid;
115  size_t length;
117  enum pack_type type;
122 } AMIPacket;
123 
130 
135 void amipack_destroy(AMIPacket *pack);
136 
142 
147 void amipack_queue_destroy(AMIQueue *queue);
148 
158 AMIHeader *amiheader_create(char *name, size_t name_size, char *value, size_t value_size);
159 
164 void amiheader_destroy(AMIHeader *hdr);
165 
174 size_t amipack_to_str(AMIPacket *pack, char **pstr);
175 
182 size_t amiheader_to_str(AMIHeader *hdr, char *buf);
183 
195 int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size);
196 
203 int amipack_list_append (AMIPacket *pack, AMIHeader *header);
204 
214 size_t amiheader_find(AMIPacket *pack, const char *name, char **value);
215 
221 enum pack_type amipack_parser_detect (const char *packet);
222 
231 int amipack_parser_prompt (const char *packet, AMIVer *version);
232 
238 AMIPacket *amipack_parser_message (const char *pack_str);
239 
245 AMIPacket *amipack_parser_command (const char *packet);
246 
252 AMIQueue *amipack_parser_queue (const char *packet);
253 
254 #endif
void amiheader_destroy(AMIHeader *hdr)
Definition: amipack.c:88
size_t amipack_to_str(AMIPacket *pack, char **pstr)
Definition: amipack.c:162
unsigned short minor
Definition: amipack.h:67
unsigned short major
Definition: amipack.h:66
AMIPacket * amipack_init()
Definition: amipack.c:45
char * sl
Definition: amipack.h:99
size_t name_size
Definition: amipack.h:77
int maxlen
Definition: amipack.h:92
AMIHeader * head
Definition: amipack.h:119
Definition: amipack.h:65
void amipack_queue_destroy(AMIQueue *queue)
Definition: amipack.c:79
enum pack_type amipack_parser_detect(const char *packet)
Definition: amipack_parser_detect.c:32
size_t length
Definition: amipack.h:115
char * name
Definition: amipack.h:76
size_t amiheader_to_str(AMIHeader *hdr, char *buf)
Definition: amipack.c:142
int size
Definition: amipack.h:111
AMIHeader * amiheader_create(char *name, size_t name_size, char *value, size_t value_size)
Definition: amipack.c:102
int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size)
Definition: amipack.c:188
char * value
Definition: amipack.h:78
Definition: amipack.h:89
Definition: amipack.h:74
AMIHeader * tail
Definition: amipack.h:120
AMIPacket * amipack_parser_message(const char *packet)
Definition: amipack_parser_message.c:35
AMIQueue * amipack_queue_init()
Definition: amipack.c:58
int amipack_parser_prompt(const char *packet, AMIVer *ver)
Definition: amipack_parser_prompt.c:41
int sid
Definition: amipack.h:113
size_t value_size
Definition: amipack.h:79
void amipack_destroy(AMIPacket *pack)
Definition: amipack.c:122
size_t amiheader_find(AMIPacket *pack, const char *name, char **val)
Definition: amipack.c:221
Definition: amipack.h:109
unsigned short patch
Definition: amipack.h:68
struct AMIHeader_ * next
Definition: amipack.h:81
int amipack_list_append(AMIPacket *pack, AMIHeader *header)
Definition: amipack.c:200
enum pack_type type
Definition: amipack.h:117