diff options
Diffstat (limited to 'csharp/src/Ice/WSEndpoint.cs')
-rw-r--r-- | csharp/src/Ice/WSEndpoint.cs | 72 |
1 files changed, 30 insertions, 42 deletions
diff --git a/csharp/src/Ice/WSEndpoint.cs b/csharp/src/Ice/WSEndpoint.cs index dcdcf5f6023..d4e1e044732 100644 --- a/csharp/src/Ice/WSEndpoint.cs +++ b/csharp/src/Ice/WSEndpoint.cs @@ -12,30 +12,20 @@ namespace IceInternal using System; using System.Diagnostics; using System.Collections.Generic; - using System.Globalization; - - // - // Delegate interface implemented by TcpEndpoint or IceSSL.EndpointI or any endpoint that WS can - // delegate to. - // - public interface WSEndpointDelegate - { - Ice.EndpointInfo getWSInfo(string resource); - }; sealed class WSEndpoint : EndpointI { internal WSEndpoint(ProtocolInstance instance, EndpointI del, string res) { _instance = instance; - _delegate = (IPEndpointI)del; + _delegate = del; _resource = res; } internal WSEndpoint(ProtocolInstance instance, EndpointI del, List<string> args) { _instance = instance; - _delegate = (IPEndpointI)del; + _delegate = del; initWithOptions(args); @@ -45,10 +35,10 @@ namespace IceInternal } } - internal WSEndpoint(ProtocolInstance instance, EndpointI del, BasicStream s) + internal WSEndpoint(ProtocolInstance instance, EndpointI del, Ice.InputStream s) { _instance = instance; - _delegate = (IPEndpointI)del; + _delegate = del; _resource = s.readString(); } @@ -80,8 +70,12 @@ namespace IceInternal public override Ice.EndpointInfo getInfo() { - Debug.Assert(_delegate is WSEndpointDelegate); - return ((WSEndpointDelegate)_delegate).getWSInfo(_resource); + Ice.WSEndpointInfo info = new InfoI(this); + info.underlying = _delegate.getInfo(); + info.resource = _resource; + info.compress = info.underlying.compress; + info.timeout = info.underlying.timeout; + return info; } public override short type() @@ -94,12 +88,10 @@ namespace IceInternal return _delegate.protocol(); } - public override void streamWrite(BasicStream s) + public override void streamWriteImpl(Ice.OutputStream s) { - s.startWriteEncaps(); _delegate.streamWriteImpl(s); s.writeString(_resource); - s.endWriteEncaps(); } public override int timeout() @@ -170,13 +162,11 @@ namespace IceInternal private sealed class EndpointI_connectorsI : EndpointI_connectors { - public EndpointI_connectorsI(ProtocolInstance instance, string host, int port, string resource, - EndpointI_connectors cb) + public EndpointI_connectorsI(ProtocolInstance instance, string host, string res, EndpointI_connectors cb) { _instance = instance; _host = host; - _port = port; - _resource = resource; + _resource = res; _callback = cb; } @@ -185,7 +175,7 @@ namespace IceInternal List<Connector> l = new List<Connector>(); foreach(Connector c in connectors) { - l.Add(new WSConnector(_instance, c, _host, _port, _resource)); + l.Add(new WSConnector(_instance, c, _host, _resource)); } _callback.connectors(l); } @@ -197,23 +187,27 @@ namespace IceInternal private ProtocolInstance _instance; private string _host; - private int _port; private string _resource; private EndpointI_connectors _callback; } - public override void connectors_async(Ice.EndpointSelectionType selType, - EndpointI_connectors callback) + public override void connectors_async(Ice.EndpointSelectionType selType, EndpointI_connectors callback) { - EndpointI_connectorsI cb = - new EndpointI_connectorsI(_instance, _delegate.host(), _delegate.port(), _resource, callback); - _delegate.connectors_async(selType, cb); + string host = ""; + for(Ice.EndpointInfo p = _delegate.getInfo(); p != null; p = p.underlying) + { + if(p is Ice.IPEndpointInfo) + { + Ice.IPEndpointInfo ipInfo = (Ice.IPEndpointInfo)p; + host = ipInfo.host + ":" + ipInfo.port; + } + } + _delegate.connectors_async(selType, new EndpointI_connectorsI(_instance, host, _resource, callback)); } public override Acceptor acceptor(string adapterName) { - Acceptor delAcc = _delegate.acceptor(adapterName); - return new WSAcceptor(this, _instance, delAcc); + return new WSAcceptor(this, _instance, _delegate.acceptor(adapterName)); } public WSEndpoint endpoint(EndpointI delEndp) @@ -300,11 +294,6 @@ namespace IceInternal return _delegate.CompareTo(p._delegate); } - public EndpointI getDelegate() - { - return _delegate; - } - protected override bool checkOption(string option, string argument, string endpoint) { switch(option[1]) @@ -329,7 +318,7 @@ namespace IceInternal } private ProtocolInstance _instance; - private IPEndpointI _delegate; + private EndpointI _delegate; private string _resource; } @@ -356,7 +345,7 @@ namespace IceInternal return new WSEndpoint(_instance, _delegate.create(args, oaEndpoint), args); } - public EndpointI read(BasicStream s) + public EndpointI read(Ice.InputStream s) { return new WSEndpoint(_instance, _delegate.read(s), s); } @@ -367,10 +356,9 @@ namespace IceInternal _instance = null; } - public EndpointFactory clone(ProtocolInstance instance) + public EndpointFactory clone(ProtocolInstance instance, EndpointFactory del) { - Debug.Assert(false); // We don't support cloning this transport. - return null; + return new WSEndpointFactory(instance, del); } private ProtocolInstance _instance; |