From 2ba4d4e0ca7aeade69ee00ab17d5fa1b69372ffc Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Wed, 18 Apr 2012 14:33:16 +0200 Subject: Added support for encoding versioning --- cpp/src/Ice/TcpEndpointI.cpp | 56 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 12 deletions(-) (limited to 'cpp/src/Ice/TcpEndpointI.cpp') diff --git a/cpp/src/Ice/TcpEndpointI.cpp b/cpp/src/Ice/TcpEndpointI.cpp index b6ec99b23a8..96de521a050 100644 --- a/cpp/src/Ice/TcpEndpointI.cpp +++ b/cpp/src/Ice/TcpEndpointI.cpp @@ -23,7 +23,9 @@ using namespace Ice; using namespace IceInternal; IceInternal::TcpEndpointI::TcpEndpointI(const InstancePtr& instance, const string& ho, Int po, Int ti, + const Ice::ProtocolVersion& protocol, const Ice::EncodingVersion& encoding, const string& conId, bool co) : + EndpointI(protocol, encoding), _instance(instance), _host(ho), _port(po), @@ -153,9 +155,7 @@ IceInternal::TcpEndpointI::TcpEndpointI(const InstancePtr& instance, const strin default: { - EndpointParseException ex(__FILE__, __LINE__); - ex.str = "unknown option `" + option + "' in `tcp " + str + "'"; - throw ex; + parseOption(option, argument, "tcp", str); } } } @@ -190,6 +190,18 @@ IceInternal::TcpEndpointI::TcpEndpointI(BasicStream* s) : s->read(const_cast(_port)); s->read(const_cast(_timeout)); s->read(const_cast(_compress)); + if(s->getReadEncoding() > Ice::Encoding_1_0) + { + s->read(const_cast(_protocol.major)); + s->read(const_cast(_protocol.minor)); + s->read(const_cast(_encoding.major)); + s->read(const_cast(_encoding.minor)); + } + else + { + const_cast(_protocol) = Ice::Protocol_1_0; + const_cast(_encoding) = Ice::Encoding_1_0; + } s->endReadEncaps(); } @@ -202,6 +214,13 @@ IceInternal::TcpEndpointI::streamWrite(BasicStream* s) const s->write(_port); s->write(_timeout); s->write(_compress); + if(s->getWriteEncoding() > Ice::Encoding_1_0) + { + s->write(_protocol.major); + s->write(_protocol.minor); + s->write(_encoding.major); + s->write(_encoding.minor); + } s->endWriteEncaps(); } @@ -218,6 +237,16 @@ IceInternal::TcpEndpointI::toString() const ostringstream s; s << "tcp"; + if(_protocol != Ice::Protocol_1_0) + { + s << " -v " << _protocol; + } + + if(_encoding != Ice::Encoding_1_0) + { + s << " -e " << _encoding; + } + if(!_host.empty()) { s << " -h "; @@ -252,8 +281,9 @@ IceInternal::TcpEndpointI::getInfo() const { public: - InfoI(Ice::Int to, bool comp, const string& host, Ice::Int port) : - TCPEndpointInfo(to, comp, host, port) + InfoI(const ProtocolVersion& pv, const EncodingVersion& ev, Ice::Int to, bool comp, const string& host, + Ice::Int port) : + TCPEndpointInfo(pv, ev, to, comp, host, port) { } @@ -276,7 +306,7 @@ IceInternal::TcpEndpointI::getInfo() const } }; - return new InfoI(_timeout, _compress, _host, _port); + return new InfoI(_protocol, _encoding, _timeout, _compress, _host, _port); } Short @@ -300,7 +330,7 @@ IceInternal::TcpEndpointI::timeout(Int timeout) const } else { - return new TcpEndpointI(_instance, _host, _port, timeout, _connectionId, _compress); + return new TcpEndpointI(_instance, _host, _port, timeout, _protocol, _encoding, _connectionId, _compress); } } @@ -313,7 +343,7 @@ IceInternal::TcpEndpointI::connectionId(const string& connectionId) const } else { - return new TcpEndpointI(_instance, _host, _port, _timeout, connectionId, _compress); + return new TcpEndpointI(_instance, _host, _port, _timeout, _protocol, _encoding, connectionId, _compress); } } @@ -332,7 +362,7 @@ IceInternal::TcpEndpointI::compress(bool compress) const } else { - return new TcpEndpointI(_instance, _host, _port, _timeout, _connectionId, compress); + return new TcpEndpointI(_instance, _host, _port, _timeout, _protocol, _encoding, _connectionId, compress); } } @@ -371,7 +401,8 @@ AcceptorPtr IceInternal::TcpEndpointI::acceptor(EndpointIPtr& endp, const string&) const { TcpAcceptor* p = new TcpAcceptor(_instance, _host, _port, _instance->protocolSupport()); - endp = new TcpEndpointI(_instance, _host, p->effectivePort(), _timeout, _connectionId, _compress); + endp = new TcpEndpointI(_instance, _host, p->effectivePort(), _timeout, _protocol, _encoding, _connectionId, + _compress); return p; } @@ -389,7 +420,8 @@ IceInternal::TcpEndpointI::expand() const { for(vector::const_iterator p = hosts.begin(); p != hosts.end(); ++p) { - endps.push_back(new TcpEndpointI(_instance, *p, _port, _timeout, _connectionId, _compress)); + endps.push_back(new TcpEndpointI(_instance, *p, _port, _timeout, _protocol, _encoding, _connectionId, + _compress)); } } return endps; @@ -533,7 +565,7 @@ IceInternal::TcpEndpointI::connectors(const vector& add vector connectors; for(unsigned int i = 0; i < addresses.size(); ++i) { - connectors.push_back(new TcpConnector(_instance, addresses[i], _timeout, _connectionId)); + connectors.push_back(new TcpConnector(_instance, addresses[i], _timeout, _protocol, _encoding, _connectionId)); } return connectors; } -- cgit v1.2.3