amiws 2.2.1
Loading...
Searching...
No Matches
amipack.h
1
20
29
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
52enum 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
65typedef struct AMIVer_ {
66 unsigned short major;
67 unsigned short minor;
68 unsigned short patch;
69} AMIVer;
70
74typedef struct AMIHeader_ {
75
76 char *name;
77 size_t name_size;
78 char *value;
79 size_t value_size;
80
81 struct AMIHeader_ *next;
82
83} AMIHeader;
84
89typedef 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
109typedef struct AMIPacket_ {
110
111 int size;
112
113 size_t length;
114
115 enum pack_type type;
116
117 AMIHeader *head;
118 AMIHeader *tail;
119
120} AMIPacket;
121
127AMIPacket *amipack_init();
128
133void amipack_destroy(AMIPacket *pack);
134
139AMIQueue *amipack_queue_init();
140
145void amipack_queue_destroy(AMIQueue *queue);
146
156AMIHeader *amiheader_create(char *name, size_t name_size, char *value, size_t value_size);
157
162void amiheader_destroy(AMIHeader *hdr);
163
172size_t amipack_to_str(AMIPacket *pack, char **pstr);
173
180size_t amiheader_to_str(AMIHeader *hdr, char *buf);
181
193int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size);
194
201int amipack_list_append (AMIPacket *pack, AMIHeader *header);
202
212size_t amiheader_find(AMIPacket *pack, const char *name, char **value);
213
219enum pack_type amipack_parser_detect (const char *packet);
220
229int amipack_parser_prompt (const char *packet, AMIVer *version);
230
236AMIPacket *amipack_parser_message (const char *pack_str);
237
243AMIPacket *amipack_parser_command (const char *packet);
244
250AMIQueue *amipack_parser_queue (const char *packet);
251
252#endif
void amiheader_destroy(AMIHeader *hdr)
Definition amipack.c:87
void amipack_queue_destroy(AMIQueue *queue)
Definition amipack.c:78
AMIPacket * amipack_init()
Definition amipack.c:45
size_t amiheader_to_str(AMIHeader *hdr, char *buf)
Definition amipack.c:141
void amipack_destroy(AMIPacket *pack)
Definition amipack.c:121
size_t amipack_to_str(AMIPacket *pack, char **pstr)
Definition amipack.c:161
int amipack_append(AMIPacket *pack, char *hdr_name, size_t name_size, char *hdr_value, size_t value_size)
Definition amipack.c:187
size_t amiheader_find(AMIPacket *pack, const char *name, char **val)
Definition amipack.c:220
int amipack_list_append(AMIPacket *pack, AMIHeader *header)
Definition amipack.c:199
AMIQueue * amipack_queue_init()
Definition amipack.c:57
AMIHeader * amiheader_create(char *name, size_t name_size, char *value, size_t value_size)
Definition amipack.c:101
Definition amipack.h:74
char * value
Definition amipack.h:78
struct AMIHeader_ * next
Definition amipack.h:81
size_t name_size
Definition amipack.h:77
char * name
Definition amipack.h:76
size_t value_size
Definition amipack.h:79
Definition amipack.h:109
enum pack_type type
Definition amipack.h:115
size_t length
Definition amipack.h:113
AMIHeader * head
Definition amipack.h:117
AMIHeader * tail
Definition amipack.h:118
int size
Definition amipack.h:111
Definition amipack.h:89
char * sl
Definition amipack.h:99
int maxlen
Definition amipack.h:92
Definition amipack.h:65
unsigned short minor
Definition amipack.h:67
unsigned short patch
Definition amipack.h:68
unsigned short major
Definition amipack.h:66