diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-11-27 11:58:35 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-11-27 11:58:35 +0100 |
commit | 47f800495093fd7679a315e2d730fea22f6135b7 (patch) | |
tree | a7b8d3488f3841367dd03d10cae293f36fd10481 /cpp/src/Ice/UdpEndpointI.cpp | |
parent | Fixed SystemException to no longer derive from LocalException (diff) | |
download | ice-47f800495093fd7679a315e2d730fea22f6135b7.tar.bz2 ice-47f800495093fd7679a315e2d730fea22f6135b7.tar.xz ice-47f800495093fd7679a315e2d730fea22f6135b7.zip |
- Added support for non-blocking AMI/batch requests, connection
creation.
- Added support for AMI oneway requests.
- Changed collocation optimization to not perform any DNS lookups.
Diffstat (limited to 'cpp/src/Ice/UdpEndpointI.cpp')
-rw-r--r-- | cpp/src/Ice/UdpEndpointI.cpp | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/cpp/src/Ice/UdpEndpointI.cpp b/cpp/src/Ice/UdpEndpointI.cpp index 2668a589142..b5f4588714c 100644 --- a/cpp/src/Ice/UdpEndpointI.cpp +++ b/cpp/src/Ice/UdpEndpointI.cpp @@ -480,14 +480,13 @@ IceInternal::UdpEndpointI::transceiver(EndpointIPtr& endp) const vector<ConnectorPtr> IceInternal::UdpEndpointI::connectors() const { - vector<ConnectorPtr> connectors; - vector<struct sockaddr_in> addresses = getAddresses(_host, _port); - for(unsigned int i = 0; i < addresses.size(); ++i) - { - connectors.push_back(new UdpConnector(_instance, addresses[i], _mcastInterface, _mcastTtl, _protocolMajor, - _protocolMinor, _encodingMajor, _encodingMinor, _connectionId)); - } - return connectors; + return connectors(getAddresses(_host, _port)); +} + +void +IceInternal::UdpEndpointI::connectors_async(const EndpointI_connectorsPtr& callback) const +{ + _instance->endpointHostResolver()->resolve(_host, _port, const_cast<UdpEndpointI*>(this), callback); } AcceptorPtr @@ -522,14 +521,14 @@ IceInternal::UdpEndpointI::expand() const } bool -IceInternal::UdpEndpointI::equivalent(const ConnectorPtr& connector) const +IceInternal::UdpEndpointI::equivalent(const EndpointIPtr& endpoint) const { - const UdpConnector* udpConnector = dynamic_cast<const UdpConnector*>(connector.get()); - if(!udpConnector) + const UdpEndpointI* udpEndpointI = dynamic_cast<const UdpEndpointI*>(endpoint.get()); + if(!udpEndpointI) { return false; } - return udpConnector->equivalent(_host, _port); + return udpEndpointI->_host == _host && udpEndpointI->_port == _port; } bool @@ -726,6 +725,18 @@ IceInternal::UdpEndpointI::operator<(const EndpointI& r) const return false; } +vector<ConnectorPtr> +IceInternal::UdpEndpointI::connectors(const vector<struct sockaddr_in>& addresses) const +{ + vector<ConnectorPtr> connectors; + for(unsigned int i = 0; i < addresses.size(); ++i) + { + connectors.push_back(new UdpConnector(_instance, addresses[i], _mcastInterface, _mcastTtl, _protocolMajor, + _protocolMinor, _encodingMajor, _encodingMinor, _connectionId)); + } + return connectors; +} + IceInternal::UdpEndpointFactory::UdpEndpointFactory(const InstancePtr& instance) : _instance(instance) { |