implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
1) /* Blinker
2) Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3) Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4) a blinkenarea.org project */
5)
6) #ifndef BLINKER_OPSPLITTER_H
7) #define BLINKER_OPSPLITTER_H
8)
9) #include <map>
10) #include <string>
11)
12) #include "Directory.h"
13) #include "File.h"
14) #include "ListTracker.h"
15) #include "Mgrs.h"
16) #include "Module.h"
17) #include "NameFile.h"
18) #include "OpConn.h"
19) #include "OpConnIf.h"
20) #include "OpReqIf.h"
21) #include "SettingFile.h"
22) #include "Time.h"
23) #include "TimeCallee.h"
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
25)
26) namespace Blinker {
27)
28) /// operator connection splitter
29) class OpSplitter: public Module, public OpReqIf, public TimeCallee
30) {
31) protected:
32) /// extension to be called
33) class Extension;
34)
35) /// extension list tracker
36) typedef ListTracker<OpSplitter, Extension, Directory> ExtListTracker;
37)
38) /// map of extensions to call (extension name -> module name)
39) typedef std::map<std::string, std::string> ExtMap;
40)
41) /// type for locally handles connection
42) struct Local {
43) std::string m_number; ///< extension number dialed so far
44) bool m_sendPlay; ///< if to send a play request
45) };
46)
47) /**
48) * @brief map of local connections,
49) * contains all incoming connections as key for which no
50) * outgoing connection is available
51) */
52) typedef std::map<OpConn *, Local> MapLocal;
53)
54) /**
55) * @brief map from incoming to outgoing connections,
56) * contains all incoming connectes as key for which a corresponding
57) * outgoing connection is available
58) */
59) typedef std::map<OpConn *, OpConn *> MapInOut;
60)
61) /// map from outgoing to incoming connections
62) typedef std::map<OpConn *, OpConn *> MapOutIn;
63)
64) public:
65) /**
66) * @brief constructor
67) * @param[in] name module name
68) * @param[in] mgrs managers
69) * @param[in] dirBase base directory
70) */
71) OpSplitter(const std::string &name, Mgrs &mgrs, const Directory &dirBase);
72)
73) /// virtual destructor
74) virtual ~OpSplitter();
75)
76) private:
77) /// copy constructor disabled
78) OpSplitter(const OpSplitter &that);
79)
80) /// assignment operator disabled
81) const OpSplitter & operator=(const OpSplitter &that);
82)
83) public:
84) /// check for update of configuration
85) virtual void updateConfig();
86)
87) /// callback when requested time reached
88) virtual void timeCall();
89)
90) /**
91) * @brief check if accepting new operator connction is possible
92) * @param[in] name operator interface name
93) * @return if accepting new connection is possible
94) */
95) virtual bool acceptNewOpConn(const std::string &name);
96)
97) /**
98) * @brief new operator connection
99) * @param[in] name operator interface name
100) * @param[in] pConn operator connection object
101) *
102) * The new connection may not yet be used for sending inside this callback.
103) */
104) virtual void newOpConn(const std::string &name, OpConn *pConn);
105)
106) /**
107) * @brief key command received on operator connection
108) * @param[in] pConn operator connection object
109) * @param[in] key key that was pressed
110) */
111) virtual void opConnRecvKey(OpConn *pConn, char key);
112)
113) /**
114) * @brief play command received on operator connection
115) * @param[in] pConn operator connection object
116) * @param[in] sound name of sound to play
117) */
118) virtual void opConnRecvPlay(OpConn *pConn, const std::string &sound);
119)
120) /**
121) * @brief operator connection is closed
122) * @param[in] pConn operator connection object
123) *
124) * The connection may not be used for sending any more in this callback.
125) */
126) virtual void opConnClose(OpConn *pConn);
127)
128) protected:
129) /**
130) * @brief create new local connection
131) * @param[in] pConn connection to make local
132) */
133) void newLocal(OpConn *pConn);
134)
135) /**
136) * @brief a key has been pressed for a local connection
137) * @param[in] itLocal local connection
138) * @param[in] key the key pressed
139) */
140) void localKey(MapLocal::iterator itLocal, char key);
141)
142) /**
143) * @brief close local connection
144) * @param[in] itLocal local connection
145) */
146) void localClose(MapLocal::iterator itLocal);
147)
148) /**
149) * @brief call extension dialed over local connection
150) * @param[in] itLocal local connection
151) */
152) void callExtension(MapLocal::iterator itLocal);
153)
154) protected:
155) NameFile m_fileSound; ///< file containing sound name
|