forked from hehol/t38modem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pmodem.h
145 lines (131 loc) · 3.92 KB
/
pmodem.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
* pmodem.h
*
* T38FAX Pseudo Modem
*
* Copyright (c) 2001-2010 Vyacheslav Frolov
*
* Open H323 Project
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Open H323 Library.
*
* The Initial Developer of the Original Code is Vyacheslav Frolov
*
* Contributor(s): Equivalence Pty ltd
*
* $Log: pmodem.h,v $
* Revision 1.11 2010-10-06 16:54:19 vfrolov
* Redesigned engine opening/closing
*
* Revision 1.11 2010/10/06 16:54:19 vfrolov
* Redesigned engine opening/closing
*
* Revision 1.10 2010/09/29 11:52:59 vfrolov
* Redesigned engine attaching/detaching
*
* Revision 1.9 2009/07/08 18:43:44 vfrolov
* Added PseudoModem::ttyName()
*
* Revision 1.8 2008/09/10 11:15:00 frolov
* Ported to OPAL SVN trunk
*
* Revision 1.7 2007/03/23 10:14:35 vfrolov
* Implemented voice mode functionality
*
* Revision 1.6 2007/01/29 12:44:41 vfrolov
* Added ability to put args to drivers
*
* Revision 1.5 2004/07/07 12:38:32 vfrolov
* The code for pseudo-tty (pty) devices that communicates with fax application formed to PTY driver.
*
* Revision 1.4 2002/05/15 16:17:49 vfrolov
* Implemented per modem routing for I/C calls
*
* Revision 1.3 2002/03/05 12:31:58 vfrolov
* Added Copyright header
* Changed class hierarchy
* PseudoModem is abstract
* PseudoModemBody is child of PseudoModem
* Added PseudoModemQ::CreateModem() to create instances
*
* Revision 1.2 2002/01/10 06:10:02 craigs
* Added MPL header
*
* Revision 1.1 2002/01/01 23:06:54 craigs
* Initial version
*
*/
#ifndef _PMODEM_H
#define _PMODEM_H
#include "pmutils.h"
///////////////////////////////////////////////////////////////
class T38Engine;
class AudioEngine;
class EngineBase;
class PseudoModem : public ModemThread
{
PCLASSINFO(PseudoModem, ModemThread);
public:
/**@name Construction */
//@{
PseudoModem(const PString &_tty) : ttyname(_tty), valid(FALSE) {};
//@}
/**@name Operations */
virtual PBoolean IsReady() const = 0;
virtual PBoolean CheckRoute(const PString &number) const = 0;
virtual PBoolean Request(PStringToString &request) const = 0;
virtual T38Engine *NewPtrT38Engine() const = 0;
virtual AudioEngine *NewPtrAudioEngine() const = 0;
virtual EngineBase *NewPtrUserInputEngine() const = 0;
const PString &ttyName() const { return ttyname; }
const PString &ptyName() const { return ptyname; }
const PString &modemToken() const { return ptyname; }
PBoolean IsValid() const { return valid; }
//@}
protected:
Comparison Compare(const PObject & obj) const;
PString ttyname;
PString ptyname;
PBoolean valid;
};
///////////////////////////////////////////////////////////////
class PseudoModemList;
PQUEUE(_PseudoModemQ, PseudoModem);
class PseudoModemQ : protected _PseudoModemQ
{
PCLASSINFO(PseudoModemQ, _PseudoModemQ);
public:
/**@name Construction */
//@{
PseudoModemQ();
~PseudoModemQ();
//@}
/**@name Operations */
PBoolean CreateModem(
const PString &tty,
const PString &route,
const PConfigArgs &args,
const PNotifier &callbackEndPoint
);
void Enqueue(PseudoModem *modem);
PBoolean Enqueue(const PString &modemToken);
PseudoModem *DequeueWithRoute(const PString &number);
PseudoModem *Dequeue(const PString &modemToken);
//@}
protected:
PseudoModem *Find(const PString &modemToken) const;
PseudoModemList *pmodem_list;
PMutex Mutex;
};
///////////////////////////////////////////////////////////////
#endif // _PMODEM_H