-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmod_call_control.h
93 lines (84 loc) · 2.61 KB
/
mod_call_control.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
* Copyright (C) 2005-2014, Anthony Minessale II <[email protected]>
*
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
*
* The Initial Developer of the Original Code is
* Anthony Minessale II <[email protected]>
* Portions created by the Initial Developer are Copyright (C)
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Stefan Yohansson <[email protected]>
*
*
* mod_call_control.c -- Bidirectional communication with external applications without socket through internal REST API and external webhook
*
*/
#ifndef MOD_CALL_CONTROL_H
#define MOD_CALL_CONTROL_H
#include <switch.h>
#include <switch_curl.h>
#include "libks/ks.h"
#include <onion/onion.h>
#define MAX_FAIL_COUNT 10
#define CC_SQLITE_DB_NAME "call_control"
struct cc_api_server {
onion *server;
switch_memory_pool_t *pool;
};
typedef struct cc_api_server cc_api_server_t;
typedef struct {
char *webhook_allowed_events;
char *api_allowed_events;
char *cc_api_host;
char *cc_api_external;
char *cc_api_port;
char *odbc_dsn;
char *dbname;
cc_api_server_t *api_server;
switch_hash_t *tasks_hash;
switch_mutex_t *hash_mutex;
switch_hash_t *background_tasks_hash;
switch_mutex_t *backgroud_tasks_mutex;
switch_mutex_t *mutex;
switch_bool_t global_database_lock;
} globals_t;
struct cc_task {
char *webhook_uri;
char *uuid;
char *uuid_secret;
switch_core_session_t *session;
switch_mutex_t *mutex;
switch_memory_pool_t *pool;
int fail_count;
// this mean that the task is running and sending webhook events
// the task could be not running but still exists in the hash
// for example when it receives a lot of failures and stop the task
// to prevent keep sending events to a webhook that is not working
int running;
// this mean that the task is not about to be removed
// if this is true, the task will be removed from the hash soon
int down;
};
typedef struct cc_task cc_task_t;
struct response_data {
char *data;
size_t size;
};
extern globals_t globals;
#endif