first version, plays videos...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 1) /* Blinker
|
update copyright header
Stefan Schuermans authored 5 years ago
|
src/common/CallMgr.cpp 2) Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
|
first version, plays videos...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 3) Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
src/noarch/CallMgr.cpp 4) a blinkenarea.org project */
src/noarch/CallMgr.cpp 5)
src/noarch/CallMgr.cpp 6) #include <map>
src/noarch/CallMgr.cpp 7) #include <set>
src/noarch/CallMgr.cpp 8)
src/noarch/CallMgr.cpp 9) #include "CallMgr.h"
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 10) #include "Io.h"
src/noarch/CallMgr.cpp 11) #include "IoCallee.h"
|
first version, plays videos...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 12) #include "Time.h"
src/noarch/CallMgr.cpp 13) #include "TimeCallee.h"
src/noarch/CallMgr.cpp 14)
src/noarch/CallMgr.cpp 15) namespace Blinker {
src/noarch/CallMgr.cpp 16)
src/noarch/CallMgr.cpp 17) /// constructor
src/noarch/CallMgr.cpp 18) CallMgr::CallMgr()
src/noarch/CallMgr.cpp 19) {
src/noarch/CallMgr.cpp 20) }
src/noarch/CallMgr.cpp 21)
src/noarch/CallMgr.cpp 22) /// destructor
src/noarch/CallMgr.cpp 23) CallMgr::~CallMgr()
src/noarch/CallMgr.cpp 24) {
src/noarch/CallMgr.cpp 25) }
src/noarch/CallMgr.cpp 26)
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 27) /**
src/noarch/CallMgr.cpp 28) * @brief cancel callback at read I/O event
src/noarch/CallMgr.cpp 29) * @param[in] callee whom not to call
src/noarch/CallMgr.cpp 30) * @param[in] io I/O object not to monitor for readability any more
src/noarch/CallMgr.cpp 31) */
src/noarch/CallMgr.cpp 32) void CallMgr::cancelIoReadCall(IoCallee *callee, Io *io)
src/noarch/CallMgr.cpp 33) {
src/noarch/CallMgr.cpp 34) // remove callee for this I/O object
src/noarch/CallMgr.cpp 35) IoCallees &callees = m_iosRead[io];
src/noarch/CallMgr.cpp 36) callees.erase(callee);
src/noarch/CallMgr.cpp 37)
src/noarch/CallMgr.cpp 38) // no more callees -> remove I/O object
src/noarch/CallMgr.cpp 39) if (callees.empty())
src/noarch/CallMgr.cpp 40) m_iosRead.erase(io);
src/noarch/CallMgr.cpp 41) }
src/noarch/CallMgr.cpp 42)
src/noarch/CallMgr.cpp 43) /**
src/noarch/CallMgr.cpp 44) * @brief request callback at read I/O event
src/noarch/CallMgr.cpp 45) * @param[in] callee whom to call
src/noarch/CallMgr.cpp 46) * @param[in] io I/O object to monitor for readability
src/noarch/CallMgr.cpp 47) */
src/noarch/CallMgr.cpp 48) void CallMgr::requestIoReadCall(IoCallee *callee, Io *io)
src/noarch/CallMgr.cpp 49) {
src/noarch/CallMgr.cpp 50) m_iosRead[io].insert(callee);
src/noarch/CallMgr.cpp 51) }
src/noarch/CallMgr.cpp 52)
src/noarch/CallMgr.cpp 53) /**
src/noarch/CallMgr.cpp 54) * @brief cancel callback at write I/O event
src/noarch/CallMgr.cpp 55) * @param[in] callee whom not to call
src/noarch/CallMgr.cpp 56) * @param[in] io I/O object not to monitor for writability any more
src/noarch/CallMgr.cpp 57) */
src/noarch/CallMgr.cpp 58) void CallMgr::cancelIoWriteCall(IoCallee *callee, Io *io)
src/noarch/CallMgr.cpp 59) {
src/noarch/CallMgr.cpp 60) // remove callee for this I/O object
src/noarch/CallMgr.cpp 61) IoCallees &callees = m_iosWrite[io];
src/noarch/CallMgr.cpp 62) callees.erase(callee);
src/noarch/CallMgr.cpp 63)
src/noarch/CallMgr.cpp 64) // no more callees -> remove I/O object
src/noarch/CallMgr.cpp 65) if (callees.empty())
src/noarch/CallMgr.cpp 66) m_iosWrite.erase(io);
src/noarch/CallMgr.cpp 67) }
src/noarch/CallMgr.cpp 68)
src/noarch/CallMgr.cpp 69) /**
src/noarch/CallMgr.cpp 70) * @brief request callback at write I/O event
src/noarch/CallMgr.cpp 71) * @param[in] callee whom to call
src/noarch/CallMgr.cpp 72) * @param[in] io I/O object to monitor for writability
src/noarch/CallMgr.cpp 73) */
src/noarch/CallMgr.cpp 74) void CallMgr::requestIoWriteCall(IoCallee *callee, Io *io)
src/noarch/CallMgr.cpp 75) {
src/noarch/CallMgr.cpp 76) m_iosWrite[io].insert(callee);
src/noarch/CallMgr.cpp 77) }
src/noarch/CallMgr.cpp 78)
|
first version, plays videos...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 79) /**
src/noarch/CallMgr.cpp 80) * @brief cancel callback at certain time
src/noarch/CallMgr.cpp 81) * @param[in] callee whom not to call
src/noarch/CallMgr.cpp 82) */
src/noarch/CallMgr.cpp 83) void CallMgr::cancelTimeCall(TimeCallee *callee)
src/noarch/CallMgr.cpp 84) {
src/noarch/CallMgr.cpp 85) // find time a call is registered at
src/noarch/CallMgr.cpp 86) TimeCalleeMap::iterator itCallee;
src/noarch/CallMgr.cpp 87) itCallee = m_timeCallees.find(callee);
src/noarch/CallMgr.cpp 88) if (itCallee == m_timeCallees.end())
src/noarch/CallMgr.cpp 89) return; // no call registered
src/noarch/CallMgr.cpp 90) const Time &time = itCallee->second;
src/noarch/CallMgr.cpp 91)
src/noarch/CallMgr.cpp 92) // remove registered call
src/noarch/CallMgr.cpp 93) m_times[time].erase(callee);
src/noarch/CallMgr.cpp 94) m_timeCallees.erase(itCallee);
src/noarch/CallMgr.cpp 95) }
src/noarch/CallMgr.cpp 96)
src/noarch/CallMgr.cpp 97) /**
src/noarch/CallMgr.cpp 98) * @brief request callback at certain time
src/noarch/CallMgr.cpp 99) * @param[in] callee whom to call
src/noarch/CallMgr.cpp 100) * @param[in] time when to call
src/noarch/CallMgr.cpp 101) *
src/noarch/CallMgr.cpp 102) * this cancels a previous time call request from callee
src/noarch/CallMgr.cpp 103) */
src/noarch/CallMgr.cpp 104) void CallMgr::requestTimeCall(TimeCallee *callee, const Time &time)
src/noarch/CallMgr.cpp 105) {
src/noarch/CallMgr.cpp 106) // cancel previous call
src/noarch/CallMgr.cpp 107) cancelTimeCall(callee);
src/noarch/CallMgr.cpp 108)
src/noarch/CallMgr.cpp 109) // register call at new time
src/noarch/CallMgr.cpp 110) m_times[time].insert(callee);
src/noarch/CallMgr.cpp 111) m_timeCallees[callee] = time;
src/noarch/CallMgr.cpp 112) }
src/noarch/CallMgr.cpp 113)
src/noarch/CallMgr.cpp 114) /// run call manager
src/noarch/CallMgr.cpp 115) void CallMgr::run()
src/noarch/CallMgr.cpp 116) {
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 117) while (!m_times.empty() || !m_iosRead.empty() || !m_iosWrite.empty()) {
src/noarch/CallMgr.cpp 118)
src/noarch/CallMgr.cpp 119) // get time until first call time
|
fix accessing empty time list
Stefan Schuermans authored 7 years ago
|
src/common/CallMgr.cpp 120) Time timeout;
src/common/CallMgr.cpp 121) if (!m_times.empty()) {
src/common/CallMgr.cpp 122) timeout = m_times.begin()->first - Time::now();
src/common/CallMgr.cpp 123) } else {
src/common/CallMgr.cpp 124) timeout.fromMs(100);
src/common/CallMgr.cpp 125) }
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 126)
src/noarch/CallMgr.cpp 127) // time already passed or reached
src/noarch/CallMgr.cpp 128) if (timeout <= Time::zero) {
src/noarch/CallMgr.cpp 129)
src/noarch/CallMgr.cpp 130) // get time callees and remove entry from time map
src/noarch/CallMgr.cpp 131) TimeCallees timeCallees = m_times.begin()->second;
src/noarch/CallMgr.cpp 132) m_times.erase(m_times.begin());
src/noarch/CallMgr.cpp 133)
src/noarch/CallMgr.cpp 134) // call time callees
src/noarch/CallMgr.cpp 135) TimeCallees::const_iterator itTC;
|
fix erasing and processing...
Stefan Schuermans authored 6 years ago
|
src/common/CallMgr.cpp 136) for (itTC = timeCallees.begin(); itTC != timeCallees.end(); ) {
src/common/CallMgr.cpp 137) TimeCallees::const_iterator itTCE = itTC; // save iterator for erase
src/common/CallMgr.cpp 138) TimeCallee *tc = *itTC; // save pointer to time callee for callback
src/common/CallMgr.cpp 139) itTC++; // advance loop iterator to next element
src/common/CallMgr.cpp 140) m_timeCallees.erase(*itTCE); // first remove request from callee map
src/common/CallMgr.cpp 141) tc->timeCall(); // then call callee
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 142) }
src/noarch/CallMgr.cpp 143)
src/noarch/CallMgr.cpp 144) } // if timeout
src/noarch/CallMgr.cpp 145)
src/noarch/CallMgr.cpp 146) // wait for I/O events
src/noarch/CallMgr.cpp 147) IoMap::const_iterator itM;
src/noarch/CallMgr.cpp 148) Io::Set rd, wr;
src/noarch/CallMgr.cpp 149) for (itM = m_iosRead.begin(); itM != m_iosRead.end(); ++itM)
src/noarch/CallMgr.cpp 150) rd.insert(itM->first);
src/noarch/CallMgr.cpp 151) for (itM = m_iosWrite.begin(); itM != m_iosWrite.end(); ++itM)
src/noarch/CallMgr.cpp 152) wr.insert(itM->first);
src/noarch/CallMgr.cpp 153) Io::wait(rd, wr, timeout);
src/noarch/CallMgr.cpp 154)
src/noarch/CallMgr.cpp 155) // call I/O callees with pending events
src/noarch/CallMgr.cpp 156) Io::Set::const_iterator itS;
src/noarch/CallMgr.cpp 157) IoCallees::const_iterator itIC;
src/noarch/CallMgr.cpp 158) for (itS = rd.begin(); itS != rd.end(); ++itS) {
src/noarch/CallMgr.cpp 159) const IoCallees &ioCallees = m_iosRead[*itS];
src/noarch/CallMgr.cpp 160) for (itIC = ioCallees.begin(); itIC != ioCallees.end(); ++itIC)
src/noarch/CallMgr.cpp 161) (*itIC)->ioReadCall(*itS);
src/noarch/CallMgr.cpp 162) }
src/noarch/CallMgr.cpp 163) for (itS = wr.begin(); itS != wr.end(); ++itS) {
src/noarch/CallMgr.cpp 164) const IoCallees &ioCallees = m_iosWrite[*itS];
src/noarch/CallMgr.cpp 165) for (itIC = ioCallees.begin(); itIC != ioCallees.end(); ++itIC)
src/noarch/CallMgr.cpp 166) (*itIC)->ioWriteCall(*itS);
|
first version, plays videos...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 167) }
src/noarch/CallMgr.cpp 168)
|
extended call manager to su...
Stefan Schuermans authored 13 years ago
|
src/noarch/CallMgr.cpp 169) } // while m_times m_iosRead m_iosWrite
|