diff options
Diffstat (limited to 'cpp/src/Ice/ACM.cpp')
-rw-r--r-- | cpp/src/Ice/ACM.cpp | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/cpp/src/Ice/ACM.cpp b/cpp/src/Ice/ACM.cpp index 2f843abc361..87ae7920096 100644 --- a/cpp/src/Ice/ACM.cpp +++ b/cpp/src/Ice/ACM.cpp @@ -18,18 +18,20 @@ using namespace std; using namespace Ice; using namespace IceInternal; +#ifndef ICE_CPP11_MAPPING IceUtil::Shared* IceInternal::upCast(ACMMonitor* p) { return p; } IceUtil::Shared* IceInternal::upCast(FactoryACMMonitor* p) { return p; } +#endif IceInternal::ACMConfig::ACMConfig(bool server) : - timeout(IceUtil::Time::seconds(60)), - heartbeat(Ice::HeartbeatOnInvocation), - close(server ? Ice::CloseOnInvocation : Ice::CloseOnInvocationAndIdle) + timeout(IceUtil::Time::seconds(60)), + heartbeat(ICE_ENUM(ACMHeartbeat, HeartbeatOnInvocation)), + close(server ? ICE_ENUM(ACMClose, CloseOnInvocation) : ICE_ENUM(ACMClose, CloseOnInvocationAndIdle)) { } -IceInternal::ACMConfig::ACMConfig(const Ice::PropertiesPtr& p, - const Ice::LoggerPtr& l, +IceInternal::ACMConfig::ACMConfig(const Ice::PropertiesPtr& p, + const Ice::LoggerPtr& l, const string& prefix, const ACMConfig& dflt) { @@ -43,10 +45,10 @@ IceInternal::ACMConfig::ACMConfig(const Ice::PropertiesPtr& p, timeoutProperty = prefix + ".Timeout"; }; - this->timeout = IceUtil::Time::seconds(p->getPropertyAsIntWithDefault(timeoutProperty, + this->timeout = IceUtil::Time::seconds(p->getPropertyAsIntWithDefault(timeoutProperty, static_cast<int>(dflt.timeout.toSeconds()))); - int hb = p->getPropertyAsIntWithDefault(prefix + ".Heartbeat", dflt.heartbeat); - if(hb >= Ice::HeartbeatOff && hb <= Ice::HeartbeatAlways) + int hb = p->getPropertyAsIntWithDefault(prefix + ".Heartbeat", static_cast<int>(dflt.heartbeat)); + if(hb >= static_cast<int>(ICE_ENUM(ACMHeartbeat, HeartbeatOff)) && hb <= static_cast<int>(ICE_ENUM(ACMHeartbeat, HeartbeatAlways))) { this->heartbeat = static_cast<Ice::ACMHeartbeat>(hb); } @@ -56,8 +58,8 @@ IceInternal::ACMConfig::ACMConfig(const Ice::PropertiesPtr& p, this->heartbeat = dflt.heartbeat; } - int cl = p->getPropertyAsIntWithDefault(prefix + ".Close", dflt.close); - if(cl >= Ice::CloseOff && cl <= Ice::CloseOnIdleForceful) + int cl = p->getPropertyAsIntWithDefault(prefix + ".Close", static_cast<int>(dflt.close)); + if(cl >= static_cast<int>(ICE_ENUM(ACMClose, CloseOff)) && cl <= static_cast<int>(ICE_ENUM(ACMClose, CloseOnIdleForceful))) { this->close = static_cast<Ice::ACMClose>(cl); } @@ -107,7 +109,7 @@ IceInternal::FactoryACMMonitor::add(const ConnectionIPtr& connection) if(_connections.empty()) { _connections.insert(connection); - _instance->timer()->scheduleRepeated(this, _config.timeout / 2); + _instance->timer()->scheduleRepeated(ICE_SHARED_FROM_THIS, _config.timeout / 2); } else { @@ -136,8 +138,8 @@ IceInternal::FactoryACMMonitor::reap(const ConnectionIPtr& connection) } ACMMonitorPtr -IceInternal::FactoryACMMonitor::acm(const IceUtil::Optional<int>& timeout, - const IceUtil::Optional<Ice::ACMClose>& close, +IceInternal::FactoryACMMonitor::acm(const IceUtil::Optional<int>& timeout, + const IceUtil::Optional<Ice::ACMClose>& close, const IceUtil::Optional<Ice::ACMHeartbeat>& heartbeat) { Lock sync(*this); @@ -156,7 +158,7 @@ IceInternal::FactoryACMMonitor::acm(const IceUtil::Optional<int>& timeout, { config.heartbeat = *heartbeat; } - return new ConnectionACMMonitor(this, _instance->timer(), config); + return ICE_MAKE_SHARED(ConnectionACMMonitor, ICE_SHARED_FROM_THIS, _instance->timer(), config); } Ice::ACM @@ -201,12 +203,12 @@ IceInternal::FactoryACMMonitor::runTimerTask() if(_connections.empty()) { - _instance->timer()->cancel(this); + _instance->timer()->cancel(ICE_SHARED_FROM_THIS); return; } } - + // // Monitor connections outside the thread synchronization, so // that connections can be added or removed during monitoring. @@ -215,11 +217,11 @@ IceInternal::FactoryACMMonitor::runTimerTask() for(set<ConnectionIPtr>::const_iterator p = _connections.begin(); p != _connections.end(); ++p) { try - { + { (*p)->monitor(now, _config); } catch(const exception& ex) - { + { handleException(ex); } catch(...) @@ -237,7 +239,7 @@ FactoryACMMonitor::handleException(const exception& ex) { return; } - + Error out(_instance->initializationData().logger); out << "exception in connection monitor:\n" << ex.what(); } @@ -250,12 +252,12 @@ FactoryACMMonitor::handleException() { return; } - + Error out(_instance->initializationData().logger); out << "unknown exception in connection monitor"; } -IceInternal::ConnectionACMMonitor::ConnectionACMMonitor(const FactoryACMMonitorPtr& parent, +IceInternal::ConnectionACMMonitor::ConnectionACMMonitor(const FactoryACMMonitorPtr& parent, const IceUtil::TimerPtr& timer, const ACMConfig& config) : _parent(parent), _timer(timer), _config(config) @@ -275,7 +277,7 @@ IceInternal::ConnectionACMMonitor::add(const ConnectionIPtr& connection) _connection = connection; if(_config.timeout != IceUtil::Time()) { - _timer->scheduleRepeated(this, _config.timeout / 2); + _timer->scheduleRepeated(ICE_SHARED_FROM_THIS, _config.timeout / 2); } } @@ -286,7 +288,7 @@ IceInternal::ConnectionACMMonitor::remove(const ConnectionIPtr& connection) assert(_connection == connection); if(_config.timeout != IceUtil::Time()) { - _timer->cancel(this); + _timer->cancel(ICE_SHARED_FROM_THIS); } _connection = 0; } @@ -298,8 +300,8 @@ IceInternal::ConnectionACMMonitor::reap(const ConnectionIPtr& connection) } ACMMonitorPtr -IceInternal::ConnectionACMMonitor::acm(const IceUtil::Optional<int>& timeout, - const IceUtil::Optional<Ice::ACMClose>& close, +IceInternal::ConnectionACMMonitor::acm(const IceUtil::Optional<int>& timeout, + const IceUtil::Optional<Ice::ACMClose>& close, const IceUtil::Optional<Ice::ACMHeartbeat>& heartbeat) { return _parent->acm(timeout, close, heartbeat); @@ -327,13 +329,13 @@ IceInternal::ConnectionACMMonitor::runTimerTask() } connection = _connection; } - + try - { + { connection->monitor(IceUtil::Time::now(IceUtil::Time::Monotonic), _config); } catch(const exception& ex) - { + { _parent->handleException(ex); } catch(...) |