summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/OnewayBatchSubscriber.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/OnewayBatchSubscriber.cpp')
-rw-r--r--cpp/src/IceStorm/OnewayBatchSubscriber.cpp31
1 files changed, 7 insertions, 24 deletions
diff --git a/cpp/src/IceStorm/OnewayBatchSubscriber.cpp b/cpp/src/IceStorm/OnewayBatchSubscriber.cpp
index d54d223f1f9..e8869cd8e13 100644
--- a/cpp/src/IceStorm/OnewayBatchSubscriber.cpp
+++ b/cpp/src/IceStorm/OnewayBatchSubscriber.cpp
@@ -20,9 +20,13 @@
using namespace IceStorm;
using namespace std;
-OnewayBatchSubscriber::OnewayBatchSubscriber(const SubscriberFactoryPtr& factory, const TraceLevelsPtr& traceLevels,
- const FlusherPtr& flusher, const QueuedProxyPtr& obj) :
+OnewayBatchSubscriber::OnewayBatchSubscriber(const SubscriberFactoryPtr& factory,
+ const Ice::CommunicatorPtr& communicator,
+ const TraceLevelsPtr& traceLevels,
+ const FlusherPtr& flusher,
+ const QueuedProxyPtr& obj) :
OnewaySubscriber(factory, traceLevels, obj),
+ _communicator(communicator),
_flusher(flusher)
{
_flusher->add(this);
@@ -79,28 +83,7 @@ OnewayBatchSubscriber::inactive() const
void
OnewayBatchSubscriber::flush()
{
- try
- {
- _obj->proxy()->ice_flush();
- }
- catch(const Ice::LocalException& e)
- {
- IceUtil::Mutex::Lock sync(_stateMutex);
- //
- // It's possible that the subscriber was unsubscribed, or
- // marked invalid by another thread. Don't display a
- // diagnostic in this case.
- //
- if(_state == StateActive)
- {
- if(_traceLevels->subscriber > 0)
- {
- Ice::Trace out(_traceLevels->logger, _traceLevels->subscriberCat);
- out << id() << ": flush failed: " << e;
- }
- _state = StateError;
- }
- }
+ _communicator->flushBatchRequests();
}
bool