summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2015-01-07 10:16:13 -0330
committerDwayne Boone <dwayne@zeroc.com>2015-01-07 10:16:13 -0330
commit25dc1ddfb828aa892afdf399c835c8a150a8cff3 (patch)
tree1c0ba31f16ad41aadcdccddbc4fc803396004709 /cpp
parentICE-6253 added tests to ensure Functional_TwowayCallback* used (diff)
downloadice-25dc1ddfb828aa892afdf399c835c8a150a8cff3.tar.bz2
ice-25dc1ddfb828aa892afdf399c835c8a150a8cff3.tar.xz
ice-25dc1ddfb828aa892afdf399c835c8a150a8cff3.zip
ICE-6082 added sndBufSize and rcvBufSize to UDPEndpointInfo
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Ice/UdpEndpointI.cpp29
-rw-r--r--cpp/src/Ice/UdpEndpointI.h5
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp17
-rw-r--r--cpp/src/Ice/UdpTransceiver.h2
-rw-r--r--cpp/test/Ice/info/AllTests.cpp8
5 files changed, 53 insertions, 8 deletions
diff --git a/cpp/src/Ice/UdpEndpointI.cpp b/cpp/src/Ice/UdpEndpointI.cpp
index 26d5cd83640..b13e3fa89f3 100644
--- a/cpp/src/Ice/UdpEndpointI.cpp
+++ b/cpp/src/Ice/UdpEndpointI.cpp
@@ -25,11 +25,13 @@ using namespace IceInternal;
IceUtil::Shared* IceInternal::upCast(UdpEndpointI* p) { return p; }
IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, const string& host, Int port,
- const Address& sourceAddr, const string& mcastInterface, Int mttl, bool conn,
- const string& conId, bool co) :
+ const Address& sourceAddr, const string& mcastInterface, Int mttl,
+ Int sndBufSize, Int rcvBufSize, bool conn, const string& conId, bool co) :
IPEndpointI(instance, host, port, sourceAddr, conId),
_mcastTtl(mttl),
_mcastInterface(mcastInterface),
+ _sndBufSize(sndBufSize),
+ _rcvBufSize(rcvBufSize),
_connect(conn),
_compress(co)
{
@@ -38,6 +40,8 @@ IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, con
IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance) :
IPEndpointI(instance),
_mcastTtl(-1),
+ _sndBufSize(-1),
+ _rcvBufSize(-1),
_connect(false),
_compress(false)
{
@@ -46,6 +50,8 @@ IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance) :
IceInternal::UdpEndpointI::UdpEndpointI(const ProtocolInstancePtr& instance, BasicStream* s) :
IPEndpointI(instance, s),
_mcastTtl(-1),
+ _sndBufSize(-1),
+ _rcvBufSize(-1),
_connect(false),
_compress(false)
{
@@ -128,8 +134,8 @@ IceInternal::UdpEndpointI::compress(bool compress) const
}
else
{
- return new UdpEndpointI(_instance, _host, _port, _sourceAddr, _mcastInterface, _mcastTtl, _connect,
- _connectionId, compress);
+ return new UdpEndpointI(_instance, _host, _port, _sourceAddr, _mcastInterface, _mcastTtl, _sndBufSize,
+ _rcvBufSize, _connect, _connectionId, compress);
}
}
@@ -161,7 +167,14 @@ UdpEndpointIPtr
IceInternal::UdpEndpointI::endpoint(const UdpTransceiverPtr& transceiver) const
{
return new UdpEndpointI(_instance, _host, transceiver->effectivePort(), _sourceAddr, _mcastInterface, _mcastTtl,
- _connect, _connectionId, _compress);
+ transceiver->sndBufSize(), transceiver->rcvBufSize(), _connect, _connectionId, _compress);
+}
+
+void
+IceInternal::UdpEndpointI::setBufSize(int sndSize, int rcvSize)
+{
+ const_cast<int&>(_sndBufSize) = sndSize;
+ const_cast<int&>(_rcvBufSize) = rcvSize;
}
string
@@ -335,6 +348,8 @@ IceInternal::UdpEndpointI::fillEndpointInfo(IPEndpointInfo* info) const
udpInfo->compress = _compress;
udpInfo->mcastTtl = _mcastTtl;
udpInfo->mcastInterface = _mcastInterface;
+ udpInfo->sndBufSize = _sndBufSize;
+ udpInfo->rcvBufSize = _rcvBufSize;
}
}
@@ -432,8 +447,8 @@ IceInternal::UdpEndpointI::createConnector(const Address& address, const Network
IPEndpointIPtr
IceInternal::UdpEndpointI::createEndpoint(const string& host, int port, const string& connectionId) const
{
- return new UdpEndpointI(_instance, host, port, _sourceAddr, _mcastInterface, _mcastTtl, _connect, connectionId,
- _compress);
+ return new UdpEndpointI(_instance, host, port, _sourceAddr, _mcastInterface, _mcastTtl, _sndBufSize, _rcvBufSize,
+ _connect, connectionId, _compress);
}
IceInternal::UdpEndpointFactory::UdpEndpointFactory(const ProtocolInstancePtr& instance) : _instance(instance)
diff --git a/cpp/src/Ice/UdpEndpointI.h b/cpp/src/Ice/UdpEndpointI.h
index 0177963f0d9..545decafca7 100644
--- a/cpp/src/Ice/UdpEndpointI.h
+++ b/cpp/src/Ice/UdpEndpointI.h
@@ -23,7 +23,7 @@ class UdpEndpointI : public IPEndpointI
public:
UdpEndpointI(const ProtocolInstancePtr&, const std::string&, Ice::Int, const Address&, const std::string&,
- Ice::Int, bool, const std::string&, bool);
+ Ice::Int, Ice::Int sndBufSize, Ice::Int rcvBufSize, bool, const std::string&, bool);
UdpEndpointI(const ProtocolInstancePtr&);
UdpEndpointI(const ProtocolInstancePtr&, BasicStream*);
@@ -44,6 +44,7 @@ public:
virtual bool operator<(const Ice::LocalObject&) const;
UdpEndpointIPtr endpoint(const UdpTransceiverPtr&) const;
+ void setBufSize(int sndSize, int rcvSize);
using IPEndpointI::connectionId;
@@ -64,6 +65,8 @@ private:
//
const Ice::Int _mcastTtl;
const std::string _mcastInterface;
+ const int _sndBufSize;
+ const int _rcvBufSize;
const bool _connect;
const bool _compress;
};
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp
index 1d2fcf47bbf..8085c1d47bb 100644
--- a/cpp/src/Ice/UdpTransceiver.cpp
+++ b/cpp/src/Ice/UdpTransceiver.cpp
@@ -884,6 +884,19 @@ IceInternal::UdpTransceiver::effectivePort() const
return getPort(_addr);
}
+int
+IceInternal::UdpTransceiver::sndBufSize() const
+{
+ return _sndSize;
+}
+
+int
+IceInternal::UdpTransceiver::rcvBufSize() const
+{
+ return _rcvSize;
+}
+
+
IceInternal::UdpTransceiver::UdpTransceiver(const ProtocolInstancePtr& instance,
const Address& addr,
#ifdef ICE_OS_WINRT
@@ -1084,6 +1097,10 @@ IceInternal::UdpTransceiver::setBufSize(const Ice::PropertiesPtr& properties)
}
}
}
+
+ if (_endpoint) {
+ _endpoint->setBufSize(_sndSize, _rcvSize);
+ }
}
#ifdef ICE_OS_WINRT
diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h
index b09c9ce327e..5844c65ac7a 100644
--- a/cpp/src/Ice/UdpTransceiver.h
+++ b/cpp/src/Ice/UdpTransceiver.h
@@ -63,6 +63,8 @@ public:
virtual void checkSendSize(const Buffer&);
int effectivePort() const;
+ int sndBufSize() const;
+ int rcvBufSize() const;
private:
diff --git a/cpp/test/Ice/info/AllTests.cpp b/cpp/test/Ice/info/AllTests.cpp
index 3997c533a56..14c7f6a6623 100644
--- a/cpp/test/Ice/info/AllTests.cpp
+++ b/cpp/test/Ice/info/AllTests.cpp
@@ -18,6 +18,10 @@ using namespace Test;
void
allTests(const Ice::CommunicatorPtr& communicator)
{
+ Ice::PropertiesPtr properties = communicator->getProperties();
+ properties->setProperty("Ice.UDP.SndSize", "1024");
+ properties->setProperty("Ice.UDP.RcvSize", "2048");
+
cout << "testing proxy endpoint information... " << flush;
{
Ice::ObjectPrx p1 =
@@ -60,6 +64,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(!udpEndpoint->secure());
test(udpEndpoint->datagram());
test(udpEndpoint->type() == Ice::UDPEndpointType);
+ test(udpEndpoint->sndBufSize == -1);
+ test(udpEndpoint->rcvBufSize == -1);
Ice::OpaqueEndpointInfoPtr opaqueEndpoint = Ice::OpaqueEndpointInfoPtr::dynamicCast(endps[2]->getInfo());
test(opaqueEndpoint);
@@ -94,6 +100,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(udpEndpoint->host == defaultHost);
test(udpEndpoint->datagram());
test(udpEndpoint->port > 0);
+ test(udpEndpoint->sndBufSize == 1024);
+ test(udpEndpoint->rcvBufSize == 2048);
adapter->destroy();