summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceStorm/SubscriberFactory.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/IceStorm/SubscriberFactory.cpp b/cpp/src/IceStorm/SubscriberFactory.cpp
index 1fef6f95b24..97966b6a9de 100644
--- a/cpp/src/IceStorm/SubscriberFactory.cpp
+++ b/cpp/src/IceStorm/SubscriberFactory.cpp
@@ -50,7 +50,14 @@ SubscriberFactory::createSubscriber(const QoS& qos, const Ice::ObjectPrx& obj)
if(reliability == "batch")
{
- return new OnewayBatchSubscriber(_traceLevels, _flusher, obj->ice_batchOneway());
+ if(obj->ice_isDatagram())
+ {
+ return new OnewayBatchSubscriber(_traceLevels, _flusher, obj->ice_batchDatagram());
+ }
+ else
+ {
+ return new OnewayBatchSubscriber(_traceLevels, _flusher, obj->ice_batchOneway());
+ }
}
else // reliability == "oneway"
{
@@ -62,7 +69,14 @@ SubscriberFactory::createSubscriber(const QoS& qos, const Ice::ObjectPrx& obj)
out << reliability <<" mode not understood.";
}
}
- return new OnewaySubscriber(_traceLevels, obj->ice_oneway());
+ if(obj->ice_isDatagram())
+ {
+ return new OnewaySubscriber(_traceLevels, obj->ice_datagram());
+ }
+ else
+ {
+ return new OnewaySubscriber(_traceLevels, obj->ice_oneway());
+ }
}
assert(false);