diff options
-rw-r--r-- | cpp/demo/Ice/throughput/config.client | 2 | ||||
-rw-r--r-- | cpp/demo/Ice/throughput/config.server | 2 | ||||
-rw-r--r-- | cpp/include/Ice/.gitignore | 3 | ||||
-rw-r--r-- | cpp/include/Ice/Makefile.mak | 4 | ||||
-rw-r--r-- | cpp/include/Ice/ObserverHelper.h | 2 | ||||
-rw-r--r-- | cpp/include/IceUtil/Makefile.mak | 4 | ||||
-rw-r--r-- | cpp/include/IceUtil/StopWatch.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/.gitignore | 3 | ||||
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 31 | ||||
-rw-r--r-- | cpp/src/Ice/EndpointI.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/Makefile.mak | 9 | ||||
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.cpp | 49 | ||||
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.h | 15 | ||||
-rw-r--r-- | cpp/src/Ice/MetricsObserverI.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Selector.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/ThreadPool.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/winrt/Makefile.mak | 9 |
17 files changed, 79 insertions, 72 deletions
diff --git a/cpp/demo/Ice/throughput/config.client b/cpp/demo/Ice/throughput/config.client index 844ab9f4887..4304ecd3d6c 100644 --- a/cpp/demo/Ice/throughput/config.client +++ b/cpp/demo/Ice/throughput/config.client @@ -23,4 +23,4 @@ Ice.Admin.InstanceName=client IceMX.Metrics.Debug.GroupBy=id IceMX.Metrics.OnParent.GroupBy=parent -IceMX.Metrics.PerOperation.Invocation.GroupBy=id +IceMX.Metrics.PerOperation.Map.Invocation.GroupBy=id diff --git a/cpp/demo/Ice/throughput/config.server b/cpp/demo/Ice/throughput/config.server index 3752e7223b9..19230d21021 100644 --- a/cpp/demo/Ice/throughput/config.server +++ b/cpp/demo/Ice/throughput/config.server @@ -24,4 +24,4 @@ Ice.Admin.InstanceName=server IceMX.Metrics.Debug.GroupBy=id IceMX.Metrics.OnParent.GroupBy=parent -IceMX.Metrics.PerOperation.Dispatch.GroupBy=operation +IceMX.Metrics.PerOperation.Map.Dispatch.GroupBy=operation diff --git a/cpp/include/Ice/.gitignore b/cpp/include/Ice/.gitignore index 1566a24c88f..9c0b2efad51 100644 --- a/cpp/include/Ice/.gitignore +++ b/cpp/include/Ice/.gitignore @@ -19,10 +19,13 @@ LocatorF.h Locator.h LoggerF.h Logger.h +Metrics.h ObjectAdapterF.h ObjectAdapter.h ObjectFactoryF.h ObjectFactory.h +ObserverF.h +Observer.h PluginF.h Plugin.h ProcessF.h diff --git a/cpp/include/Ice/Makefile.mak b/cpp/include/Ice/Makefile.mak index 379a039d689..beac405aa34 100644 --- a/cpp/include/Ice/Makefile.mak +++ b/cpp/include/Ice/Makefile.mak @@ -77,6 +77,7 @@ SDK_HEADERS = $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\BasicStream.h \ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Logger.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\LoggerF.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\LoggerUtil.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Metrics.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Object.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObjectAdapter.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObjectAdapterF.h \
@@ -84,6 +85,9 @@ SDK_HEADERS = $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\BasicStream.h \ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObjectF.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObjectFactory.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObjectFactoryF.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Observer.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObserverF.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ObserverHelper.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Outgoing.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\OutgoingAsync.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\OutgoingAsyncF.h \
diff --git a/cpp/include/Ice/ObserverHelper.h b/cpp/include/Ice/ObserverHelper.h index cfc6421ec93..a73db590f34 100644 --- a/cpp/include/Ice/ObserverHelper.h +++ b/cpp/include/Ice/ObserverHelper.h @@ -91,7 +91,7 @@ protected: TPtr _observer; }; -class InvocationObserver : public ObserverHelperT<Ice::Instrumentation::InvocationObserver> +class ICE_API InvocationObserver : public ObserverHelperT<Ice::Instrumentation::InvocationObserver> { public: diff --git a/cpp/include/IceUtil/Makefile.mak b/cpp/include/IceUtil/Makefile.mak index c977acd2690..3bbb77f8842 100644 --- a/cpp/include/IceUtil/Makefile.mak +++ b/cpp/include/IceUtil/Makefile.mak @@ -49,16 +49,18 @@ SDK_HEADERS = $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\AbstractMutex.h \ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\OutputUtil.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Random.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\RecMutex.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ScannerConfig.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ScopedArray.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Shared.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\StringUtil.h \
+ $(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\StopWatch.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Thread.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\ThreadException.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Time.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Timer.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\UUID.h \
$(SDK_INCLUDE_PATH)\$(INCLUDE_DIR)\Unicode.h
-
+
all:: $(SDK_HEADERS)
!endif
diff --git a/cpp/include/IceUtil/StopWatch.h b/cpp/include/IceUtil/StopWatch.h index 1ffabf199a1..14f07e40682 100644 --- a/cpp/include/IceUtil/StopWatch.h +++ b/cpp/include/IceUtil/StopWatch.h @@ -15,7 +15,7 @@ namespace IceUtilInternal { -class ICE_UTIL_API StopWatch +class StopWatch { public: @@ -26,10 +26,10 @@ public: _s = IceUtil::Time::now(IceUtil::Time::Monotonic); } - long stop() + IceUtil::Int64 stop() { assert(isStarted()); - long d = (IceUtil::Time::now(IceUtil::Time::Monotonic) - _s).toMicroSeconds(); + IceUtil::Int64 d = (IceUtil::Time::now(IceUtil::Time::Monotonic) - _s).toMicroSeconds(); _s = IceUtil::Time(); return d; } diff --git a/cpp/src/Ice/.gitignore b/cpp/src/Ice/.gitignore index 0a81a49dd6e..b65a953e025 100644 --- a/cpp/src/Ice/.gitignore +++ b/cpp/src/Ice/.gitignore @@ -19,10 +19,13 @@ LocatorF.cpp Locator.cpp LoggerF.cpp Logger.cpp +Metrics.cpp ObjectAdapterF.cpp ObjectAdapter.cpp ObjectFactoryF.cpp ObjectFactory.cpp +ObserverF.cpp +Observer.cpp PluginF.cpp Plugin.cpp ProcessF.cpp diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index b823e77de2f..afc70dcf85f 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -1335,21 +1335,24 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current) unscheduleTimeout(current.operation); if(current.operation & SocketOperationWrite && !_writeStream.b.empty()) { - if(_observer.get() && _writeStream.i != _writeStream.b.end()) + if(_writeStream.i != _writeStream.b.end()) { - _observer->startWrite(); - } - - if(_writeStream.i != _writeStream.b.end() && !_transceiver->write(_writeStream)) - { - assert(!_writeStream.b.empty()); - scheduleTimeout(SocketOperationWrite, _endpoint->timeout()); - return; - } - - if(_observer.get()) - { - _observer->finishWrite(); + if(_observer.get()) + { + _observer->startWrite(); + } + + if(!_transceiver->write(_writeStream)) + { + assert(!_writeStream.b.empty()); + scheduleTimeout(SocketOperationWrite, _endpoint->timeout()); + return; + } + + if(_observer.get()) + { + _observer->finishWrite(); + } } assert(_writeStream.i == _writeStream.b.end()); } diff --git a/cpp/src/Ice/EndpointI.cpp b/cpp/src/Ice/EndpointI.cpp index d53cf2ec612..a0b6f0c4415 100644 --- a/cpp/src/Ice/EndpointI.cpp +++ b/cpp/src/Ice/EndpointI.cpp @@ -360,6 +360,12 @@ IceInternal::EndpointHostResolver::EndpointHostResolver(const InstancePtr& insta { } +vector<ConnectorPtr> +IceInternal::EndpointHostResolver::resolve(const string& host, int port, const EndpointIPtr& endpoint) +{ + return endpoint->connectors(); +} + void IceInternal::EndpointHostResolver::resolve(const string&, int, const EndpointIPtr& endpoint, diff --git a/cpp/src/Ice/Makefile.mak b/cpp/src/Ice/Makefile.mak index 522da39075e..37f401cc50d 100644 --- a/cpp/src/Ice/Makefile.mak +++ b/cpp/src/Ice/Makefile.mak @@ -60,6 +60,9 @@ OBJS = Acceptor.obj \ LoggerI.obj \
Logger.obj \
LoggerUtil.obj \
+ Metrics.obj \
+ MetricsAdminI.obj \
+ MetricsObserverI.obj \
Network.obj \
ObjectAdapterFactory.obj \
ObjectAdapterI.obj \
@@ -67,6 +70,9 @@ OBJS = Acceptor.obj \ ObjectFactoryManager.obj \
ObjectFactory.obj \
Object.obj \
+ Observer.obj \
+ ObserverHelper.obj \
+ ObserverI.obj \
OpaqueEndpointI.obj \
OutgoingAsync.obj \
Outgoing.obj \
@@ -171,8 +177,11 @@ clean:: -del /q Locator.cpp $(HDIR)\Locator.h
-del /q LoggerF.cpp $(HDIR)\LoggerF.h
-del /q Logger.cpp $(HDIR)\Logger.h
+ -del /q Metrics.cpp $(HDIR)\Metrics.h
-del /q ObjectAdapterF.cpp $(HDIR)\ObjectAdapterF.h
-del /q ObjectAdapter.cpp $(HDIR)\ObjectAdapter.h
+ -del /q Observer.cpp $(HDIR)\Observer.h
+ -del /q ObserverF.cpp $(HDIR)\ObserverF.h
-del /q ObjectFactoryF.cpp $(HDIR)\ObjectFactoryF.h
-del /q ObjectFactory.cpp $(HDIR)\ObjectFactory.h
-del /q PluginF.cpp $(HDIR)\PluginF.h
diff --git a/cpp/src/Ice/MetricsAdminI.cpp b/cpp/src/Ice/MetricsAdminI.cpp index 8000dd429e4..9cf34111335 100644 --- a/cpp/src/Ice/MetricsAdminI.cpp +++ b/cpp/src/Ice/MetricsAdminI.cpp @@ -179,7 +179,7 @@ MetricsMapI::detached(Entry* entry) return; } - assert(_detachedQueue.size() <= _retain); + assert(static_cast<int>(_detachedQueue.size()) <= _retain); deque<Entry*>::iterator p = _detachedQueue.begin(); while(p != _detachedQueue.end()) @@ -209,7 +209,7 @@ MetricsMapI::detached(Entry* entry) _detachedQueue.push_back(entry); } -MetricsViewI::MetricsViewI(bool enabled) : _enabled(enabled) +MetricsViewI::MetricsViewI() { } @@ -229,12 +229,9 @@ MetricsView MetricsViewI::getMetrics() { MetricsView metrics; - if(_enabled) + for(map<string, MetricsMapIPtr>::const_iterator p = _maps.begin(); p != _maps.end(); ++p) { - for(map<string, MetricsMapIPtr>::const_iterator p = _maps.begin(); p != _maps.end(); ++p) - { - metrics.insert(make_pair(p->first, p->second->getMetrics())); - } + metrics.insert(make_pair(p->first, p->second->getMetrics())); } return metrics; } @@ -253,13 +250,10 @@ MetricsViewI::getFailures(const string& mapName) MetricsMapI::EntryPtr MetricsViewI::getMatching(const MetricsHelper& helper) const { - if(_enabled) + map<string, MetricsMapIPtr>::const_iterator p = _maps.find(helper.getMapName()); + if(p != _maps.end()) { - map<string, MetricsMapIPtr>::const_iterator p = _maps.find(helper.getMapName()); - if(p != _maps.end()) - { - return p->second->getMatching(helper); - } + return p->second->getMatching(helper); } return 0; } @@ -303,12 +297,16 @@ MetricsAdminI::addFactory(const string& mapName, const MetricsMapFactoryPtr& fac { viewName = viewName.substr(0, dotPos); } + + if(_properties->getPropertyAsIntWithDefault(viewsPrefix + viewName + ".Disabled", 0) > 0) + { + continue; // The view is disabled + } map<string, MetricsViewIPtr>::const_iterator q = _views.find(viewName); if(q == _views.end()) { - bool disabled = _properties->getPropertyAsIntWithDefault(viewsPrefix + viewName + ".Disabled", 0) > 0; - q = _views.insert(make_pair(viewName, new MetricsViewI(!disabled))).first; + q = _views.insert(make_pair(viewName, new MetricsViewI())).first; } MetricsViewIPtr view = q->second; @@ -440,24 +438,3 @@ MetricsAdminI::removeMapFromView(const string& view, const string& mapName, cons } } -void -MetricsAdminI::setViewEnabled(const string& view, bool enabled) -{ - vector<string> maps; - { - Lock sync(*this); - map<string, MetricsViewIPtr>::const_iterator p = _views.find(view); - if(p == _views.end()) - { - throw UnknownMetricsView(); - } - p->second->setEnabled(enabled); - maps = p->second->getMaps(); - } - for(vector<string>::const_iterator p = maps.begin(); p != maps.end(); ++p) - { - _updaters[*p]->update(); - } -} - - diff --git a/cpp/src/Ice/MetricsAdminI.h b/cpp/src/Ice/MetricsAdminI.h index a3542a33070..3cf635b41a0 100644 --- a/cpp/src/Ice/MetricsAdminI.h +++ b/cpp/src/Ice/MetricsAdminI.h @@ -75,7 +75,7 @@ public: } void - detach(long lifetime) + detach(Ice::Long lifetime) { bool detached = false; { @@ -273,17 +273,7 @@ class MetricsViewI : public IceUtil::Shared { public: - MetricsViewI(bool); - - void setEnabled(bool enabled) - { - _enabled = enabled; - } - - bool isEnabled() const - { - return _enabled; - } + MetricsViewI(); void add(const std::string&, const MetricsMapIPtr&); void remove(const std::string&); @@ -298,7 +288,6 @@ public: private: std::map<std::string, MetricsMapIPtr> _maps; - bool _enabled; }; typedef IceUtil::Handle<MetricsViewI> MetricsViewIPtr; diff --git a/cpp/src/Ice/MetricsObserverI.h b/cpp/src/Ice/MetricsObserverI.h index f3c1581f2e4..e4456205f6e 100644 --- a/cpp/src/Ice/MetricsObserverI.h +++ b/cpp/src/Ice/MetricsObserverI.h @@ -297,7 +297,7 @@ public: virtual void detach() { - long lifetime = _watch.stop(); + Ice::Long lifetime = _watch.stop(); for(typename SeqType::const_iterator p = _objects.begin(); p != _objects.end(); ++p) { p->second->detach(lifetime); diff --git a/cpp/src/Ice/Selector.h b/cpp/src/Ice/Selector.h index cf3e152ff55..06727cf1a56 100644 --- a/cpp/src/Ice/Selector.h +++ b/cpp/src/Ice/Selector.h @@ -10,6 +10,8 @@ #pragma once #include <IceUtil/StringUtil.h> +#include <IceUtil/Monitor.h> +#include <IceUtil/Mutex.h> #include <Ice/Network.h> #include <Ice/InstanceF.h> diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 3f37c88b024..2faf56e1538 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -762,7 +762,7 @@ IceInternal::ThreadPool::run(const EventHandlerThreadPtr& thread) } } #else - ThreadPoolCurrent current(_instance, this); + ThreadPoolCurrent current(_instance, this, thread); while(true) { try diff --git a/cpp/src/Ice/winrt/Makefile.mak b/cpp/src/Ice/winrt/Makefile.mak index a0b71c11842..1e40c3599ea 100644 --- a/cpp/src/Ice/winrt/Makefile.mak +++ b/cpp/src/Ice/winrt/Makefile.mak @@ -56,6 +56,9 @@ OBJS = $(ARCH)\$(CONFIG)\Acceptor.obj \ $(ARCH)\$(CONFIG)\LoggerI.obj \ $(ARCH)\$(CONFIG)\Logger.obj \ $(ARCH)\$(CONFIG)\LoggerUtil.obj \ + $(ARCH)\$(CONFIG)\Metrics.obj \ + $(ARCH)\$(CONFIG)\MetricsAdminI.obj \ + $(ARCH)\$(CONFIG)\MetricsObserverI.obj \ $(ARCH)\$(CONFIG)\Network.obj \ $(ARCH)\$(CONFIG)\ObjectAdapterFactory.obj \ $(ARCH)\$(CONFIG)\ObjectAdapterI.obj \ @@ -63,6 +66,9 @@ OBJS = $(ARCH)\$(CONFIG)\Acceptor.obj \ $(ARCH)\$(CONFIG)\ObjectFactoryManager.obj \ $(ARCH)\$(CONFIG)\ObjectFactory.obj \ $(ARCH)\$(CONFIG)\Object.obj \ + $(ARCH)\$(CONFIG)\Observer.obj \ + $(ARCH)\$(CONFIG)\ObserverHelper.obj \ + $(ARCH)\$(CONFIG)\ObserverI.obj \ $(ARCH)\$(CONFIG)\OpaqueEndpointI.obj \ $(ARCH)\$(CONFIG)\OutgoingAsync.obj \ $(ARCH)\$(CONFIG)\Outgoing.obj \ @@ -251,6 +257,9 @@ clean:: -del /q $(SOURCE_DIR)\Locator.cpp $(HDIR)\Locator.h -del /q $(SOURCE_DIR)\LoggerF.cpp $(HDIR)\LoggerF.h -del /q $(SOURCE_DIR)\Logger.cpp $(HDIR)\Logger.h + -del /q $(SOURCE_DIR)\Metrics.cpp $(HDIR)\Metrics.h + -del /q $(SOURCE_DIR)\Observer.cpp $(HDIR)\Observer.h + -del /q $(SOURCE_DIR)\ObserverF.cpp $(HDIR)\ObserverF.h -del /q $(SOURCE_DIR)\ObjectAdapterF.cpp $(HDIR)\ObjectAdapterF.h -del /q $(SOURCE_DIR)\ObjectAdapter.cpp $(HDIR)\ObjectAdapter.h -del /q $(SOURCE_DIR)\ObjectFactoryF.cpp $(HDIR)\ObjectFactoryF.h |