-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathjoin.cpp
More file actions
112 lines (86 loc) · 2.26 KB
/
join.cpp
File metadata and controls
112 lines (86 loc) · 2.26 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*****************************************************************************\
** **
** PBX4Linux **
** **
**---------------------------------------------------------------------------**
** Copyright: Andreas Eversberg **
** **
** join functions **
** **
\*****************************************************************************/
#include "main.h"
//#define __u8 unsigned char
//#define __u16 unsigned short
//#define __u32 unsigned int
unsigned int join_serial = 1; /* must be 1, because 0== no join */
//JOIN_STATES
class Join *join_first = NULL;
/*
* find the join with join_id
*/
class Join *find_join_id(unsigned int join_id)
{
class Join *join = join_first;
while(join) {
//printf("comparing: '%s' with '%s'\n", name, join->j_name);
if (join->j_serial == join_id)
return(join);
join = join->next;
}
return(NULL);
}
/*
* constructor for a new join
*/
Join::Join(void)
{
class Join **joinp;
j_serial = join_serial++;
j_type = JOIN_TYPE_NONE;
/* attach to chain */
next = NULL;
joinp = &join_first;
while(*joinp)
joinp = &((*joinp)->next);
*joinp = this;
classuse++;
}
/*
* join descructor
*/
Join::~Join()
{
class Join *cl, **clp;
classuse--;
cl = join_first;
clp = &join_first;
while(cl) {
if (cl == this)
break;
clp = &cl->next;
cl = cl->next;
}
if (!cl)
FATAL("software error, join not in chain!\n");
*clp = cl->next; /* detach from chain */
}
/* epoint sends a message to a join
*
*/
void Join::message_epoint(unsigned int epoint_id, int message_type, union parameter *param)
{
}
/* free all join structures */
void join_free(void)
{
if (!join_first) {
PDEBUG(DEBUG_JOIN, "no more pending join(s), done!\n");
return;
}
while(join_first) {
if (options.deb & DEBUG_JOIN) {
PDEBUG(DEBUG_JOIN, "freeing pending join\n");
}
delete join_first;
}
}