summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/TcpEndpointI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/TcpEndpointI.cpp')
-rw-r--r--cpp/src/Ice/TcpEndpointI.cpp53
1 files changed, 41 insertions, 12 deletions
diff --git a/cpp/src/Ice/TcpEndpointI.cpp b/cpp/src/Ice/TcpEndpointI.cpp
index 7c8f94c231e..e38885976fb 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),
@@ -34,6 +36,7 @@ IceInternal::TcpEndpointI::TcpEndpointI(const InstancePtr& instance, const strin
}
IceInternal::TcpEndpointI::TcpEndpointI(const InstancePtr& instance, const string& str, bool oaEndpoint) :
+ EndpointI(Ice::currentProtocol, instance->defaultsAndOverrides()->defaultEncoding),
_instance(instance),
_port(0),
_timeout(-1),
@@ -153,9 +156,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 +191,16 @@ IceInternal::TcpEndpointI::TcpEndpointI(BasicStream* s) :
s->read(const_cast<Int&>(_port));
s->read(const_cast<Int&>(_timeout));
s->read(const_cast<bool&>(_compress));
+ if(s->getReadEncoding() > Ice::Encoding_1_0)
+ {
+ const_cast<Ice::ProtocolVersion&>(_protocol).__read(s);
+ const_cast<Ice::EncodingVersion&>(_encoding).__read(s);
+ }
+ else
+ {
+ const_cast<ProtocolVersion&>(_protocol) = Ice::Protocol_1_0;
+ const_cast<EncodingVersion&>(_encoding) = Ice::Encoding_1_0;
+ }
s->endReadEncaps();
}
@@ -202,6 +213,11 @@ IceInternal::TcpEndpointI::streamWrite(BasicStream* s) const
s->write(_port);
s->write(_timeout);
s->write(_compress);
+ if(s->getWriteEncoding() > Ice::Encoding_1_0)
+ {
+ _protocol.__write(s);
+ _encoding.__write(s);
+ }
s->endWriteEncaps();
}
@@ -218,6 +234,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 +278,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 +303,7 @@ IceInternal::TcpEndpointI::getInfo() const
}
};
- return new InfoI(_timeout, _compress, _host, _port);
+ return new InfoI(_protocol, _encoding, _timeout, _compress, _host, _port);
}
Short
@@ -300,7 +327,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 +340,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 +359,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 +398,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 +417,8 @@ IceInternal::TcpEndpointI::expand() const
{
for(vector<string>::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 +562,7 @@ IceInternal::TcpEndpointI::connectors(const vector<Address>& addresses) const
vector<ConnectorPtr> 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;
}