Yate
yatepbx.h
1
21
22#include <yatephone.h>
23
24#ifdef _WINDOWS
25
26#ifdef LIBYPBX_EXPORTS
27#define YPBX_API __declspec(dllexport)
28#else
29#ifndef LIBYPBX_STATIC
30#define YPBX_API __declspec(dllimport)
31#endif
32#endif
33
34#endif /* _WINDOWS */
35
36#ifndef YPBX_API
37#define YPBX_API
38#endif
39
40namespace TelEngine {
41
45class YPBX_API CallInfo : public NamedList
46{
47public:
48 inline CallInfo(const char* name, CallEndpoint* call = 0)
49 : NamedList(name), m_call(call)
50 { }
51
52 virtual ~CallInfo()
53 { m_call = 0; }
54
55 inline CallEndpoint* call() const
56 { return m_call; }
57
58 inline void setCall(CallEndpoint* call)
59 { m_call = call; }
60
61 inline void clearCall()
62 { m_call = 0; }
63
67 bool copyParam(const NamedList& original, const String& name, bool clear = false);
68
72 void copyParams(const NamedList& original, bool clear, ...);
73 void fillParam(NamedList& target, const String& name, bool clear = false);
74 void fillParams(NamedList& target);
75
76protected:
77 CallEndpoint* m_call;
78 int m_route;
79};
80
84class YPBX_API CallList
85{
86public:
87 inline void append(CallInfo* call)
88 { m_calls.append(call); }
89 inline void remove(CallInfo* call)
90 { m_calls.remove(call,false); }
91 CallInfo* find(const String& id);
92 CallInfo* find(const CallEndpoint* call);
93protected:
94 ObjList m_calls;
95};
96
97class YPBX_API MultiRouter : public MessageReceiver, public Mutex
98{
99public:
100 enum {
101 Route,
102 Execute,
103 Hangup,
104 Disconnected
105 };
106 MultiRouter(const char* trackName = 0);
107 virtual ~MultiRouter();
108 void setup(int priority = 0);
109 virtual bool received(Message& msg, int id);
110 virtual bool msgRoute(Message& msg, CallInfo& info, bool first);
111 virtual bool msgExecute(Message& msg, CallInfo& info, bool first);
112 virtual bool msgDisconnected(Message& msg, CallInfo& info);
113 virtual void msgHangup(Message& msg, CallInfo& info);
114 virtual Message* buildExecute(CallInfo& info, bool reroute) = 0;
115 Message* defaultExecute(CallInfo& info, const char* route = 0);
116protected:
117 CallList m_list;
118private:
119 String m_trackName;
120 MessageRelay* m_relRoute;
121 MessageRelay* m_relExecute;
122 MessageRelay* m_relHangup;
123 MessageRelay* m_relDisconnected;
124};
125
126class ChanAssistList;
127
131class YPBX_API ChanAssist : public RefObject
132{
133public:
137 virtual ~ChanAssist();
138
143 virtual const String& toString() const
144 { return m_chanId; }
145
150 virtual void msgStartup(Message& msg);
151
156 virtual void msgHangup(Message& msg);
157
162 virtual void msgExecute(Message& msg);
163
169 virtual bool msgDisconnect(Message& msg, const String& reason);
170
175 inline ChanAssistList* list() const
176 { return m_list; }
177
182 inline const String& id() const
183 { return m_chanId; }
184
191
197 { return locate(m_chanId); }
198
199protected:
206 : m_list(list), m_chanId(id)
207 { }
208private:
209 ChanAssist(); // no default constructor please
210 ChanAssistList* m_list;
211 String m_chanId;
212};
213
218class YPBX_API ChanAssistList : public Module
219{
220 friend class ChanAssist;
221public:
225 enum {
226 Startup = Private,
227 Hangup,
228 Disconnected,
229 AssistPrivate
230 };
231
236 { }
237
244 virtual bool received(Message& msg, int id);
245
253 virtual bool received(Message& msg, int id, ChanAssist* assist);
254
258 virtual void initialize();
259
266 virtual ChanAssist* create(Message& msg, const String& id) = 0;
267
272 virtual void init(int priority = 15);
273
279 inline ChanAssist* find(const String& id) const
280 { return static_cast<ChanAssist*>(m_calls[id]); }
281
282protected:
288 inline ChanAssistList(const char* name, bool earlyInit = false)
289 : Module(name, "misc", earlyInit), m_first(true)
290 { }
291
296 void removeAssist(ChanAssist* assist);
297
302 inline HashList& calls()
303 { return m_calls; }
304
309 inline const HashList& calls() const
310 { return m_calls; }
311
312private:
313 ChanAssistList(); // no default constructor please
314 HashList m_calls;
315 bool m_first;
316};
317
318}
319
320/* vi: set ts=8 sw=4 sts=4 noet: */
Definition yatepbx.h:46
bool copyParam(const NamedList &original, const String &name, bool clear=false)
void copyParams(const NamedList &original, bool clear,...)
Definition yatepbx.h:85
Definition yatepbx.h:219
virtual bool received(Message &msg, int id, ChanAssist *assist)
HashList & calls()
Definition yatepbx.h:302
virtual ~ChanAssistList()
Definition yatepbx.h:235
void removeAssist(ChanAssist *assist)
virtual void initialize()
virtual bool received(Message &msg, int id)
ChanAssistList(const char *name, bool earlyInit=false)
Definition yatepbx.h:288
const HashList & calls() const
Definition yatepbx.h:309
virtual void init(int priority=15)
ChanAssist * find(const String &id) const
Definition yatepbx.h:279
virtual ChanAssist * create(Message &msg, const String &id)=0
Definition yatepbx.h:132
RefPointer< CallEndpoint > locate() const
Definition yatepbx.h:196
virtual void msgStartup(Message &msg)
virtual bool msgDisconnect(Message &msg, const String &reason)
virtual ~ChanAssist()
const String & id() const
Definition yatepbx.h:182
ChanAssistList * list() const
Definition yatepbx.h:175
virtual void msgHangup(Message &msg)
virtual const String & toString() const
Definition yatepbx.h:143
static RefPointer< CallEndpoint > locate(const String &id)
ChanAssist(ChanAssistList *list, const String &id)
Definition yatepbx.h:205
virtual void msgExecute(Message &msg)
A hashed object list class.
Definition yateclass.h:3658
Mutex(bool recursive=false, const char *name=0)
NamedList(const char *name)
An object list class.
Definition yateclass.h:1454
Templated smart pointer class.
Definition yateclass.h:1306
A C-style string handling class.
Definition yateclass.h:2131
void clear()
Definition yatemime.h:34