amiws  2.2.1
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  size_t length;
115  enum pack_type type;
120 } AMIPacket;
121 
128 
133 void amipack_destroy(AMIPacket *pack);
134 
140 
145 void amipack_queue_destroy(AMIQueue *queue);
146 
156 AMIHeader *amiheader_create(char *name, size_t name_size, char *value, size_t value_size);
157 
162 void amiheader_destroy(AMIHeader *hdr);
163 
172 size_t amipack_to_str(AMIPacket *pack, char **pstr);
173 
180 size_t amiheader_to_str(AMIHeader *hdr, char *buf);
181 
193 int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size);
194 
201 int amipack_list_append (AMIPacket *pack, AMIHeader *header);
202 
212 size_t amiheader_find(AMIPacket *pack, const char *name, char **value);
213 
219 enum pack_type amipack_parser_detect (const char *packet);
220 
229 int amipack_parser_prompt (const char *packet, AMIVer *version);
230 
236 AMIPacket *amipack_parser_message (const char *pack_str);
237 
243 AMIPacket *amipack_parser_command (const char *packet);
244 
250 AMIQueue *amipack_parser_queue (const char *packet);
251 
252 #endif
void amiheader_destroy(AMIHeader *hdr)
Definition: amipack.c:87
size_t amipack_to_str(AMIPacket *pack, char **pstr)
Definition: amipack.c:161
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:117
Definition: amipack.h:65
void amipack_queue_destroy(AMIQueue *queue)
Definition: amipack.c:78
enum pack_type amipack_parser_detect(const char *packet)
Definition: amipack_parser_detect.c:32
size_t length
Definition: amipack.h:113
char * name
Definition: amipack.h:76
size_t amiheader_to_str(AMIHeader *hdr, char *buf)
Definition: amipack.c:141
int size
Definition: amipack.h:111
AMIHeader * amiheader_create(char *name, size_t name_size, char *value, size_t value_size)
Definition: amipack.c:101
int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size)
Definition: amipack.c:187
char * value
Definition: amipack.h:78
Definition: amipack.h:89
Definition: amipack.h:74
AMIHeader * tail
Definition: amipack.h:118
AMIPacket * amipack_parser_message(const char *packet)
Definition: amipack_parser_message.c:35
AMIQueue * amipack_queue_init()
Definition: amipack.c:57
int amipack_parser_prompt(const char *packet, AMIVer *ver)
Definition: amipack_parser_prompt.c:41
size_t value_size
Definition: amipack.h:79
void amipack_destroy(AMIPacket *pack)
Definition: amipack.c:121
size_t amiheader_find(AMIPacket *pack, const char *name, char **val)
Definition: amipack.c:220
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:199
enum pack_type type
Definition: amipack.h:115