implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 1) /* Blinker
|
update copyright header
Stefan Schuermans authored 5 years ago
|
src/common/OpSplitter.cpp 2) Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 3) Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
src/noarch/OpSplitter.cpp 4) a blinkenarea.org project */
src/noarch/OpSplitter.cpp 5)
src/noarch/OpSplitter.cpp 6) #include <map>
src/noarch/OpSplitter.cpp 7) #include <string>
src/noarch/OpSplitter.cpp 8)
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 9) #include "BoolFile.h"
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 10) #include "Directory.h"
src/noarch/OpSplitter.cpp 11) #include "File.h"
src/noarch/OpSplitter.cpp 12) #include "ListTracker.h"
src/noarch/OpSplitter.cpp 13) #include "ListTracker_impl.h"
src/noarch/OpSplitter.cpp 14) #include "Mgrs.h"
src/noarch/OpSplitter.cpp 15) #include "Module.h"
src/noarch/OpSplitter.cpp 16) #include "NameFile.h"
src/noarch/OpSplitter.cpp 17) #include "OpConn.h"
src/noarch/OpSplitter.cpp 18) #include "OpConnIf.h"
src/noarch/OpSplitter.cpp 19) #include "OpMgr.h"
src/noarch/OpSplitter.cpp 20) #include "OpSplitter.h"
src/noarch/OpSplitter.cpp 21) #include "OpSplitterExtension.h"
src/noarch/OpSplitter.cpp 22) #include "SettingFile.h"
src/noarch/OpSplitter.cpp 23) #include "Time.h"
src/noarch/OpSplitter.cpp 24) #include "TimeCallee.h"
|
limit number of connections...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 25) #include "UIntFile.h"
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 26)
src/noarch/OpSplitter.cpp 27) namespace Blinker {
src/noarch/OpSplitter.cpp 28)
src/noarch/OpSplitter.cpp 29) /**
src/noarch/OpSplitter.cpp 30) * @brief constructor
src/noarch/OpSplitter.cpp 31) * @param[in] name module name
src/noarch/OpSplitter.cpp 32) * @param[in] mgrs managers
src/noarch/OpSplitter.cpp 33) * @param[in] dirBase base directory
src/noarch/OpSplitter.cpp 34) */
src/noarch/OpSplitter.cpp 35) OpSplitter::OpSplitter(const std::string &name, Mgrs &mgrs,
src/noarch/OpSplitter.cpp 36) const Directory &dirBase):
src/noarch/OpSplitter.cpp 37) Module(name, mgrs, dirBase),
src/noarch/OpSplitter.cpp 38) m_fileSound(dirBase.getFile("sound")),
|
limit number of connections...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 39) m_fileMaxConn(dirBase.getFile("maxconn")),
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 40) m_fileSingle(dirBase.getFile("single")),
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 41) m_extListTracker(*this, dirBase.getSubdir("extensions"))
src/noarch/OpSplitter.cpp 42) {
src/noarch/OpSplitter.cpp 43) // load extensions
src/noarch/OpSplitter.cpp 44) m_extListTracker.init();
src/noarch/OpSplitter.cpp 45)
src/noarch/OpSplitter.cpp 46) // open operator connection interface
src/noarch/OpSplitter.cpp 47) m_mgrs.m_opMgr.open(m_name, this);
src/noarch/OpSplitter.cpp 48) }
src/noarch/OpSplitter.cpp 49)
src/noarch/OpSplitter.cpp 50) /// virtual destructor
src/noarch/OpSplitter.cpp 51) OpSplitter::~OpSplitter()
src/noarch/OpSplitter.cpp 52) {
src/noarch/OpSplitter.cpp 53) // close operator connection interface
src/noarch/OpSplitter.cpp 54) m_mgrs.m_opMgr.close(m_name);
src/noarch/OpSplitter.cpp 55)
src/noarch/OpSplitter.cpp 56) // close all connections
src/noarch/OpSplitter.cpp 57) while (!m_mapLocal.empty()) {
src/noarch/OpSplitter.cpp 58) MapLocal::iterator it = m_mapLocal.begin();
src/noarch/OpSplitter.cpp 59) it->first->close();
src/noarch/OpSplitter.cpp 60) m_mapLocal.erase(it);
src/noarch/OpSplitter.cpp 61) }
src/noarch/OpSplitter.cpp 62) while (!m_mapInOut.empty()) {
src/noarch/OpSplitter.cpp 63) MapInOut::iterator it = m_mapInOut.begin();
src/noarch/OpSplitter.cpp 64) it->first->close();
src/noarch/OpSplitter.cpp 65) m_mapInOut.erase(it);
src/noarch/OpSplitter.cpp 66) }
src/noarch/OpSplitter.cpp 67) while (!m_mapOutIn.empty()) {
src/noarch/OpSplitter.cpp 68) MapOutIn::iterator it = m_mapOutIn.begin();
src/noarch/OpSplitter.cpp 69) it->first->close();
src/noarch/OpSplitter.cpp 70) m_mapOutIn.erase(it);
src/noarch/OpSplitter.cpp 71) }
src/noarch/OpSplitter.cpp 72)
src/noarch/OpSplitter.cpp 73) // unload extensions
src/noarch/OpSplitter.cpp 74) m_extListTracker.clear();
src/noarch/OpSplitter.cpp 75)
src/noarch/OpSplitter.cpp 76) // cancel time callback
src/noarch/OpSplitter.cpp 77) m_mgrs.m_callMgr.cancelTimeCall(this);
src/noarch/OpSplitter.cpp 78) }
src/noarch/OpSplitter.cpp 79)
src/noarch/OpSplitter.cpp 80) /// check for update of configuration
src/noarch/OpSplitter.cpp 81) void OpSplitter::updateConfig()
src/noarch/OpSplitter.cpp 82) {
src/noarch/OpSplitter.cpp 83) // sound name file was modified -> re-read sound name
src/noarch/OpSplitter.cpp 84) if (m_fileSound.checkModified())
src/noarch/OpSplitter.cpp 85) m_fileSound.update();
src/noarch/OpSplitter.cpp 86)
|
limit number of connections...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 87) // max. number of conn. file was modified -> re-read max. number of conn.
src/noarch/OpSplitter.cpp 88) if (m_fileMaxConn.checkModified())
src/noarch/OpSplitter.cpp 89) m_fileMaxConn.update();
src/noarch/OpSplitter.cpp 90)
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 91) // single mode config file was modified -> re-read single mode config
src/noarch/OpSplitter.cpp 92) if (m_fileSingle.checkModified())
src/noarch/OpSplitter.cpp 93) m_fileSingle.update();
src/noarch/OpSplitter.cpp 94)
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 95) // extensions update
src/noarch/OpSplitter.cpp 96) m_extListTracker.updateConfig();
src/noarch/OpSplitter.cpp 97) }
src/noarch/OpSplitter.cpp 98)
src/noarch/OpSplitter.cpp 99) /// callback when requested time reached
src/noarch/OpSplitter.cpp 100) void OpSplitter::timeCall()
src/noarch/OpSplitter.cpp 101) {
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 102) // process pending actions for local connections
src/noarch/OpSplitter.cpp 103) MapLocal::iterator it = m_mapLocal.begin();
src/noarch/OpSplitter.cpp 104) while (it != m_mapLocal.end()) {
src/noarch/OpSplitter.cpp 105) // close connection
src/noarch/OpSplitter.cpp 106) if (it->second.m_close) {
src/noarch/OpSplitter.cpp 107) MapLocal::iterator itDel = it;
src/noarch/OpSplitter.cpp 108) ++it; // we have to increment ourself to make erasing in loop work
src/noarch/OpSplitter.cpp 109) itDel->first->close();
src/noarch/OpSplitter.cpp 110) m_mapLocal.erase(itDel);
src/noarch/OpSplitter.cpp 111) continue; // it already incremented -> skip rest of loop
src/noarch/OpSplitter.cpp 112) }
src/noarch/OpSplitter.cpp 113) // send sound play request on marked local operator connection
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 114) if (it->second.m_sendPlay) {
src/noarch/OpSplitter.cpp 115) it->second.m_sendPlay = false;
src/noarch/OpSplitter.cpp 116) if (m_fileSound.m_valid)
src/noarch/OpSplitter.cpp 117) it->first->sendPlay(m_fileSound.m_obj.m_str);
src/noarch/OpSplitter.cpp 118) }
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 119) ++it;
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 120) }
src/noarch/OpSplitter.cpp 121) }
src/noarch/OpSplitter.cpp 122)
src/noarch/OpSplitter.cpp 123) /**
src/noarch/OpSplitter.cpp 124) * @brief check if accepting new operator connction is possible
src/noarch/OpSplitter.cpp 125) * @param[in] name operator interface name
src/noarch/OpSplitter.cpp 126) * @return if accepting new connection is possible
src/noarch/OpSplitter.cpp 127) */
src/noarch/OpSplitter.cpp 128) bool OpSplitter::acceptNewOpConn(const std::string &name)
src/noarch/OpSplitter.cpp 129) {
|
limit number of connections...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 130) // if maximum number of connections if limited, check it
src/noarch/OpSplitter.cpp 131) if (m_fileMaxConn.m_valid &&
src/noarch/OpSplitter.cpp 132) m_mapLocal.size() + m_mapInOut.size() >= m_fileMaxConn.m_obj.m_uint)
src/noarch/OpSplitter.cpp 133) return false; // too many connection
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 134)
src/noarch/OpSplitter.cpp 135) // single mode
src/noarch/OpSplitter.cpp 136) if (m_fileSingle.m_valid && m_fileSingle.m_obj.m_bool) {
src/noarch/OpSplitter.cpp 137)
src/noarch/OpSplitter.cpp 138) // accept first connection
src/noarch/OpSplitter.cpp 139) if (m_mapLocal.empty() && m_mapInOut.empty())
src/noarch/OpSplitter.cpp 140) return true;
src/noarch/OpSplitter.cpp 141)
src/noarch/OpSplitter.cpp 142) // no operator interface selected yet
src/noarch/OpSplitter.cpp 143) if (m_singleOp.empty())
src/noarch/OpSplitter.cpp 144) return false;
src/noarch/OpSplitter.cpp 145)
src/noarch/OpSplitter.cpp 146) // additional connections: ask selected operator interface
src/noarch/OpSplitter.cpp 147) return m_mgrs.m_opMgr.canConnect(m_singleOp);
src/noarch/OpSplitter.cpp 148)
src/noarch/OpSplitter.cpp 149) } // if m_fileSingle
src/noarch/OpSplitter.cpp 150)
|
limit number of connections...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 151) return true;
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 152)
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 153) (void)name; // unused
src/noarch/OpSplitter.cpp 154) }
src/noarch/OpSplitter.cpp 155)
src/noarch/OpSplitter.cpp 156) /**
src/noarch/OpSplitter.cpp 157) * @brief new operator connection
src/noarch/OpSplitter.cpp 158) * @param[in] name operator interface name
src/noarch/OpSplitter.cpp 159) * @param[in] pConn operator connection object
src/noarch/OpSplitter.cpp 160) *
src/noarch/OpSplitter.cpp 161) * The new connection may not yet be used for sending inside this callback.
src/noarch/OpSplitter.cpp 162) */
src/noarch/OpSplitter.cpp 163) void OpSplitter::newOpConn(const std::string &name, OpConn *pConn)
src/noarch/OpSplitter.cpp 164) {
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 165) // this is a new incoming connection
src/noarch/OpSplitter.cpp 166)
src/noarch/OpSplitter.cpp 167) // single mode and not first connection
src/noarch/OpSplitter.cpp 168) if (m_fileSingle.m_valid && m_fileSingle.m_obj.m_bool) {
src/noarch/OpSplitter.cpp 169) if (!m_mapLocal.empty() || !m_mapInOut.empty()) {
src/noarch/OpSplitter.cpp 170)
src/noarch/OpSplitter.cpp 171) // try to open outgoiong operator connection to selected operator intf.
src/noarch/OpSplitter.cpp 172) OpConn *pOutConn = m_mgrs.m_opMgr.connect(m_singleOp, this);
src/noarch/OpSplitter.cpp 173) if (!pOutConn) {
src/noarch/OpSplitter.cpp 174) // module is not ready for connection
src/noarch/OpSplitter.cpp 175) newLocal(pConn, true); // make conn. a local conn. to be closed soon
src/noarch/OpSplitter.cpp 176) return;
src/noarch/OpSplitter.cpp 177) }
src/noarch/OpSplitter.cpp 178)
src/noarch/OpSplitter.cpp 179) // establish connection forwarding
src/noarch/OpSplitter.cpp 180) m_mapInOut[pConn] = pOutConn;
src/noarch/OpSplitter.cpp 181) m_mapOutIn[pOutConn] = pConn;
src/noarch/OpSplitter.cpp 182)
src/noarch/OpSplitter.cpp 183) return;
src/noarch/OpSplitter.cpp 184) } // if !m_mapLocal.empty() ...
src/noarch/OpSplitter.cpp 185) } // if m_fileSingle ...
src/noarch/OpSplitter.cpp 186)
src/noarch/OpSplitter.cpp 187) // make connection a local connection
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 188) newLocal(pConn);
src/noarch/OpSplitter.cpp 189)
src/noarch/OpSplitter.cpp 190) (void)name; // unused
src/noarch/OpSplitter.cpp 191) }
src/noarch/OpSplitter.cpp 192)
src/noarch/OpSplitter.cpp 193) /**
src/noarch/OpSplitter.cpp 194) * @brief key command received on operator connection
src/noarch/OpSplitter.cpp 195) * @param[in] pConn operator connection object
src/noarch/OpSplitter.cpp 196) * @param[in] key key that was pressed
src/noarch/OpSplitter.cpp 197) */
src/noarch/OpSplitter.cpp 198) void OpSplitter::opConnRecvKey(OpConn *pConn, char key)
src/noarch/OpSplitter.cpp 199) {
src/noarch/OpSplitter.cpp 200) // local connection -> process
src/noarch/OpSplitter.cpp 201) MapLocal::iterator itLocal = m_mapLocal.find(pConn);
src/noarch/OpSplitter.cpp 202) if (itLocal != m_mapLocal.end()) {
src/noarch/OpSplitter.cpp 203) localKey(itLocal, key);
src/noarch/OpSplitter.cpp 204) return;
src/noarch/OpSplitter.cpp 205) }
src/noarch/OpSplitter.cpp 206)
src/noarch/OpSplitter.cpp 207) // incoming to outgoing connection -> forward
src/noarch/OpSplitter.cpp 208) MapInOut::iterator itInOut = m_mapInOut.find(pConn);
src/noarch/OpSplitter.cpp 209) if (itInOut != m_mapInOut.end()) {
src/noarch/OpSplitter.cpp 210) itInOut->second->sendKey(key);
src/noarch/OpSplitter.cpp 211) return;
src/noarch/OpSplitter.cpp 212) }
src/noarch/OpSplitter.cpp 213)
src/noarch/OpSplitter.cpp 214) // outgoing to incoming connection -> forward
src/noarch/OpSplitter.cpp 215) MapOutIn::iterator itOutIn = m_mapOutIn.find(pConn);
src/noarch/OpSplitter.cpp 216) if (itOutIn != m_mapOutIn.end()) {
src/noarch/OpSplitter.cpp 217) itOutIn->second->sendKey(key);
src/noarch/OpSplitter.cpp 218) return;
src/noarch/OpSplitter.cpp 219) }
src/noarch/OpSplitter.cpp 220) }
src/noarch/OpSplitter.cpp 221)
src/noarch/OpSplitter.cpp 222) /**
src/noarch/OpSplitter.cpp 223) * @brief play command received on operator connection
src/noarch/OpSplitter.cpp 224) * @param[in] pConn operator connection object
src/noarch/OpSplitter.cpp 225) * @param[in] sound name of sound to play
src/noarch/OpSplitter.cpp 226) */
src/noarch/OpSplitter.cpp 227) void OpSplitter::opConnRecvPlay(OpConn *pConn, const std::string &sound)
src/noarch/OpSplitter.cpp 228) {
src/noarch/OpSplitter.cpp 229) // play command does not make sense for local connections -> ignore
src/noarch/OpSplitter.cpp 230)
src/noarch/OpSplitter.cpp 231) // incoming to outgoing connection -> forward
src/noarch/OpSplitter.cpp 232) MapInOut::iterator itInOut = m_mapInOut.find(pConn);
src/noarch/OpSplitter.cpp 233) if (itInOut != m_mapInOut.end()) {
src/noarch/OpSplitter.cpp 234) itInOut->second->sendPlay(sound);
src/noarch/OpSplitter.cpp 235) return;
src/noarch/OpSplitter.cpp 236) }
src/noarch/OpSplitter.cpp 237)
src/noarch/OpSplitter.cpp 238) // outgoing to incoming connection -> forward
src/noarch/OpSplitter.cpp 239) MapOutIn::iterator itOutIn = m_mapOutIn.find(pConn);
src/noarch/OpSplitter.cpp 240) if (itOutIn != m_mapOutIn.end()) {
src/noarch/OpSplitter.cpp 241) itOutIn->second->sendPlay(sound);
src/noarch/OpSplitter.cpp 242) return;
src/noarch/OpSplitter.cpp 243) }
src/noarch/OpSplitter.cpp 244) }
src/noarch/OpSplitter.cpp 245)
src/noarch/OpSplitter.cpp 246) /**
src/noarch/OpSplitter.cpp 247) * @brief operator connection is closed
src/noarch/OpSplitter.cpp 248) * @param[in] pConn operator connection object
src/noarch/OpSplitter.cpp 249) *
src/noarch/OpSplitter.cpp 250) * The connection may not be used for sending any more in this callback.
src/noarch/OpSplitter.cpp 251) */
src/noarch/OpSplitter.cpp 252) void OpSplitter::opConnClose(OpConn *pConn)
src/noarch/OpSplitter.cpp 253) {
src/noarch/OpSplitter.cpp 254) // local connection -> forget this connection
src/noarch/OpSplitter.cpp 255) MapLocal::iterator itLocal = m_mapLocal.find(pConn);
src/noarch/OpSplitter.cpp 256) if (itLocal != m_mapLocal.end()) {
src/noarch/OpSplitter.cpp 257) m_mapLocal.erase(itLocal);
src/noarch/OpSplitter.cpp 258) return;
src/noarch/OpSplitter.cpp 259) }
src/noarch/OpSplitter.cpp 260)
src/noarch/OpSplitter.cpp 261) // incoming to outgoing connection -> close outgoing connection as well
src/noarch/OpSplitter.cpp 262) MapInOut::iterator itInOut = m_mapInOut.find(pConn);
src/noarch/OpSplitter.cpp 263) if (itInOut != m_mapInOut.end()) {
src/noarch/OpSplitter.cpp 264) itInOut->second->close();
src/noarch/OpSplitter.cpp 265) m_mapOutIn.erase(itInOut->second);
src/noarch/OpSplitter.cpp 266) m_mapInOut.erase(itInOut);
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 267) if (m_mapInOut.empty()) // last connection closed -> no operator intf. sel.
src/noarch/OpSplitter.cpp 268) m_singleOp.clear();
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 269) return;
src/noarch/OpSplitter.cpp 270) }
src/noarch/OpSplitter.cpp 271)
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 272) // outgoing to incoming connection
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 273) MapOutIn::iterator itOutIn = m_mapOutIn.find(pConn);
src/noarch/OpSplitter.cpp 274) if (itOutIn != m_mapOutIn.end()) {
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 275) OpConn * pInConn = itOutIn->second;
src/noarch/OpSplitter.cpp 276) m_mapInOut.erase(pInConn);
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 277) m_mapOutIn.erase(itOutIn);
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 278) if (m_mapInOut.empty()) // last connection closed -> no operator intf. sel.
src/noarch/OpSplitter.cpp 279) m_singleOp.clear();
src/noarch/OpSplitter.cpp 280) // single mode and not last connection
src/noarch/OpSplitter.cpp 281) if (m_fileSingle.m_valid && m_fileSingle.m_obj.m_bool) {
src/noarch/OpSplitter.cpp 282) if (!m_mapLocal.empty() || !m_mapInOut.empty()) {
src/noarch/OpSplitter.cpp 283) // close incoming connection as well
src/noarch/OpSplitter.cpp 284) pInConn->close();
src/noarch/OpSplitter.cpp 285) return;
src/noarch/OpSplitter.cpp 286) }
src/noarch/OpSplitter.cpp 287) }
src/noarch/OpSplitter.cpp 288) // make incoming connection local
src/noarch/OpSplitter.cpp 289) newLocal(pInConn);
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 290) return;
src/noarch/OpSplitter.cpp 291) }
src/noarch/OpSplitter.cpp 292) }
src/noarch/OpSplitter.cpp 293)
src/noarch/OpSplitter.cpp 294) /**
src/noarch/OpSplitter.cpp 295) * @brief create new local connection
src/noarch/OpSplitter.cpp 296) * @param[in] pConn connection to make local
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 297) * @param[in] close if to close connection as soon as possible
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 298) */
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 299) void OpSplitter::newLocal(OpConn *pConn, bool close /* = false */)
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 300) {
src/noarch/OpSplitter.cpp 301) // add connection to local connection map
src/noarch/OpSplitter.cpp 302) Local &local = m_mapLocal[pConn];
src/noarch/OpSplitter.cpp 303) local.m_number.clear(); // no extension dialed so far
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 304) local.m_sendPlay = !close; // send play command if close not requested
src/noarch/OpSplitter.cpp 305) local.m_close = close;
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 306) m_mgrs.m_callMgr.requestTimeCall(this, Time::now());
src/noarch/OpSplitter.cpp 307) }
src/noarch/OpSplitter.cpp 308)
src/noarch/OpSplitter.cpp 309) /**
src/noarch/OpSplitter.cpp 310) * @brief a key has been pressed for a local connection
src/noarch/OpSplitter.cpp 311) * @param[in] itLocal local connection
src/noarch/OpSplitter.cpp 312) * @param[in] key the key pressed
src/noarch/OpSplitter.cpp 313) */
src/noarch/OpSplitter.cpp 314) void OpSplitter::localKey(MapLocal::iterator itLocal, char key)
src/noarch/OpSplitter.cpp 315) {
src/noarch/OpSplitter.cpp 316) switch (key) {
src/noarch/OpSplitter.cpp 317) // begin new extension number
src/noarch/OpSplitter.cpp 318) case '*':
src/noarch/OpSplitter.cpp 319) itLocal->second.m_number.clear();
src/noarch/OpSplitter.cpp 320) break;
src/noarch/OpSplitter.cpp 321) // add digit to extension number
src/noarch/OpSplitter.cpp 322) case '0':
src/noarch/OpSplitter.cpp 323) case '1':
src/noarch/OpSplitter.cpp 324) case '2':
src/noarch/OpSplitter.cpp 325) case '3':
src/noarch/OpSplitter.cpp 326) case '4':
src/noarch/OpSplitter.cpp 327) case '5':
src/noarch/OpSplitter.cpp 328) case '6':
src/noarch/OpSplitter.cpp 329) case '7':
src/noarch/OpSplitter.cpp 330) case '8':
src/noarch/OpSplitter.cpp 331) case '9':
src/noarch/OpSplitter.cpp 332) itLocal->second.m_number += key;
src/noarch/OpSplitter.cpp 333) break;
src/noarch/OpSplitter.cpp 334) // close local connection / call extension
src/noarch/OpSplitter.cpp 335) case '#':
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 336) if (itLocal->second.m_number.empty()) {
src/noarch/OpSplitter.cpp 337) itLocal->first->close();
src/noarch/OpSplitter.cpp 338) m_mapLocal.erase(itLocal);
src/noarch/OpSplitter.cpp 339) } else {
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 340) callExtension(itLocal);
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 341) }
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 342) break;
src/noarch/OpSplitter.cpp 343) }
src/noarch/OpSplitter.cpp 344) }
src/noarch/OpSplitter.cpp 345)
src/noarch/OpSplitter.cpp 346) /**
src/noarch/OpSplitter.cpp 347) * @brief call extension dialed over local connection
src/noarch/OpSplitter.cpp 348) * @param[in] itLocal local connection
src/noarch/OpSplitter.cpp 349) */
src/noarch/OpSplitter.cpp 350) void OpSplitter::callExtension(MapLocal::iterator itLocal)
src/noarch/OpSplitter.cpp 351) {
src/noarch/OpSplitter.cpp 352) // lookup extension
src/noarch/OpSplitter.cpp 353) ExtMap::iterator itExt = m_extMap.find(itLocal->second.m_number);
src/noarch/OpSplitter.cpp 354) if (itExt == m_extMap.end()) {
src/noarch/OpSplitter.cpp 355) // unknown extension -> ignore
src/noarch/OpSplitter.cpp 356) itLocal->second.m_number.clear(); // begin new extension number
src/noarch/OpSplitter.cpp 357) return;
src/noarch/OpSplitter.cpp 358) }
src/noarch/OpSplitter.cpp 359)
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 360) // save selected operator interface for single mode
src/noarch/OpSplitter.cpp 361) m_singleOp = itExt->second;
src/noarch/OpSplitter.cpp 362)
|
implemnted operator connect...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 363) // try to open outgoiong operator connection to module
src/noarch/OpSplitter.cpp 364) OpConn *pOutConn = m_mgrs.m_opMgr.connect(itExt->second, this);
|
implemented single mode for...
Stefan Schuermans authored 12 years ago
|
src/noarch/OpSplitter.cpp 365) if (!pOutConn) {
|