You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
1.5 KiB
99 lines
1.5 KiB
#ifndef __CALL_H__
|
|
#define __CALL_H__
|
|
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
#include "ipt_MEDIAPROXY.h"
|
|
|
|
|
|
|
|
struct poller;
|
|
struct control_stream;
|
|
|
|
|
|
|
|
struct peer;
|
|
struct callstream;
|
|
struct call;
|
|
struct callmaster;
|
|
|
|
|
|
|
|
|
|
struct stream {
|
|
u_int32_t ip;
|
|
u_int16_t port;
|
|
char *mediatype;
|
|
};
|
|
struct streamrelay {
|
|
int fd;
|
|
struct stream peer;
|
|
u_int16_t localport;
|
|
unsigned char idx;
|
|
struct peer *up;
|
|
struct mediaproxy_stats stats;
|
|
struct mediaproxy_stats kstats;
|
|
time_t last;
|
|
};
|
|
struct peer {
|
|
struct streamrelay rtps[2];
|
|
char *tag;
|
|
char *mediatype;
|
|
char *codec;
|
|
unsigned char idx;
|
|
struct callstream *up;
|
|
int kernelized:1;
|
|
int filled:1;
|
|
int confirmed:1;
|
|
};
|
|
struct callstream {
|
|
struct peer peers[2];
|
|
struct call *call;
|
|
};
|
|
|
|
struct call {
|
|
struct callmaster *callmaster;
|
|
|
|
GQueue *callstreams;
|
|
|
|
char *callid;
|
|
time_t created;
|
|
char *calling_agent;
|
|
char *called_agent;
|
|
GHashTable *infohash;
|
|
};
|
|
|
|
struct callmaster {
|
|
GHashTable *callhash;
|
|
u_int16_t lastport;
|
|
struct mediaproxy_stats statsps;
|
|
struct mediaproxy_stats stats;
|
|
|
|
struct poller *poller;
|
|
int kernelfd;
|
|
unsigned int kernelid;
|
|
u_int32_t ip;
|
|
unsigned int timeout;
|
|
unsigned int silent_timeout;
|
|
unsigned char tos;
|
|
};
|
|
|
|
|
|
|
|
|
|
struct callmaster *callmaster_new(struct poller *);
|
|
|
|
|
|
|
|
char *call_request(const char **, struct callmaster *);
|
|
char *call_lookup(const char **, struct callmaster *);
|
|
void call_delete(const char **, struct callmaster *);
|
|
|
|
void calls_status(struct callmaster *, struct control_stream *);
|
|
|
|
|
|
|
|
#endif
|