diff options
Diffstat (limited to 'java/src/Ice/src/main/java/IceInternal/WSEndpoint.java')
-rw-r--r-- | java/src/Ice/src/main/java/IceInternal/WSEndpoint.java | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/java/src/Ice/src/main/java/IceInternal/WSEndpoint.java b/java/src/Ice/src/main/java/IceInternal/WSEndpoint.java new file mode 100644 index 00000000000..f8f248beb00 --- /dev/null +++ b/java/src/Ice/src/main/java/IceInternal/WSEndpoint.java @@ -0,0 +1,329 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceInternal; + +final class WSEndpoint extends IceInternal.EndpointI +{ + public WSEndpoint(ProtocolInstance instance, EndpointI del, String res) + { + _instance = instance; + _delegate = (IPEndpointI)del; + _resource = res; + } + + public WSEndpoint(ProtocolInstance instance, EndpointI del, java.util.ArrayList<String> args) + { + _instance = instance; + _delegate = (IPEndpointI)del; + + initWithOptions(args); + + if(_resource == null) + { + _resource = "/"; + } + } + + public WSEndpoint(ProtocolInstance instance, EndpointI del, BasicStream s) + { + _instance = instance; + _delegate = (IPEndpointI)del; + _resource = s.readString(); + } + + @Override + public Ice.EndpointInfo getInfo() + { + Ice.WSEndpointInfo info = new Ice.WSEndpointInfo() + { + @Override + public short type() + { + return WSEndpoint.this.type(); + } + + @Override + public boolean datagram() + { + return WSEndpoint.this.datagram(); + } + + @Override + public boolean secure() + { + return WSEndpoint.this.secure(); + } + }; + _delegate.fillEndpointInfo(info); + info.resource = _resource; + return info; + } + + @Override + public short type() + { + return _delegate.type(); + } + + @Override + public String protocol() + { + return _delegate.protocol(); + } + + @Override + public void streamWrite(BasicStream s) + { + s.startWriteEncaps(); + _delegate.streamWriteImpl(s); + s.writeString(_resource); + s.endWriteEncaps(); + } + + @Override + public int timeout() + { + return _delegate.timeout(); + } + + @Override + public EndpointI timeout(int timeout) + { + if(timeout == _delegate.timeout()) + { + return this; + } + else + { + return new WSEndpoint(_instance, _delegate.timeout(timeout), _resource); + } + } + + @Override + public String connectionId() + { + return _delegate.connectionId(); + } + + @Override + public EndpointI connectionId(String connectionId) + { + if(connectionId.equals(_delegate.connectionId())) + { + return this; + } + else + { + return new WSEndpoint(_instance, _delegate.connectionId(connectionId), _resource); + } + } + + @Override + public boolean compress() + { + return _delegate.compress(); + } + + @Override + public EndpointI compress(boolean compress) + { + if(compress == _delegate.compress()) + { + return this; + } + else + { + return new WSEndpoint(_instance, _delegate.compress(compress), _resource); + } + } + + @Override + public boolean datagram() + { + return _delegate.datagram(); + } + + @Override + public boolean secure() + { + return _delegate.secure(); + } + + @Override + public Transceiver transceiver() + { + return null; + } + + @Override + public java.util.List<Connector> connectors(Ice.EndpointSelectionType selType) + { + java.util.List<Connector> connectors = _delegate.connectors(selType); + java.util.List<Connector> l = new java.util.ArrayList<Connector>(); + for(Connector c : connectors) + { + l.add(new WSConnector(_instance, c, _delegate.host(), _delegate.port(), _resource)); + } + return l; + } + + @Override + public void connectors_async(Ice.EndpointSelectionType selType, final EndpointI_connectors callback) + { + EndpointI_connectors cb = new EndpointI_connectors() + { + @Override + public void connectors(java.util.List<Connector> connectors) + { + java.util.List<Connector> l = new java.util.ArrayList<Connector>(); + for(Connector c : connectors) + { + l.add(new WSConnector(_instance, c, _delegate.host(), _delegate.port(), _resource)); + } + callback.connectors(l); + } + + @Override + public void exception(Ice.LocalException ex) + { + callback.exception(ex); + } + }; + _delegate.connectors_async(selType, cb); + } + + @Override + public Acceptor acceptor(String adapterName) + { + Acceptor delAcc = _delegate.acceptor(adapterName); + return new WSAcceptor(this, _instance, delAcc); + } + + public WSEndpoint endpoint(EndpointI delEndp) + { + return new WSEndpoint(_instance, delEndp, _resource); + } + + @Override + public java.util.List<EndpointI> expand() + { + java.util.List<EndpointI> endps = _delegate.expand(); + java.util.List<EndpointI> l = new java.util.ArrayList<EndpointI>(); + for(EndpointI e : endps) + { + l.add(e == _delegate ? this : new WSEndpoint(_instance, e, _resource)); + } + return l; + } + + @Override + public boolean equivalent(EndpointI endpoint) + { + if(!(endpoint instanceof WSEndpoint)) + { + return false; + } + WSEndpoint wsEndpointI = (WSEndpoint)endpoint; + return _delegate.equivalent(wsEndpointI._delegate); + } + + @Override + synchronized public int hashCode() + { + int h = _delegate.hashCode(); + h = IceInternal.HashUtil.hashAdd(h, _resource); + return h; + } + + @Override + public String options() + { + // + // WARNING: Certain features, such as proxy validation in Glacier2, + // depend on the format of proxy strings. Changes to toString() and + // methods called to generate parts of the reference string could break + // these features. Please review for all features that depend on the + // format of proxyToString() before changing this and related code. + // + String s = _delegate.options(); + + if(_resource != null && _resource.length() > 0) + { + s += " -r "; + boolean addQuote = _resource.indexOf(':') != -1; + if(addQuote) + { + s += "\""; + } + s += _resource; + if(addQuote) + { + s += "\""; + } + } + + return s; + } + + @Override + public int compareTo(EndpointI obj) // From java.lang.Comparable + { + if(!(obj instanceof WSEndpoint)) + { + return type() < obj.type() ? -1 : 1; + } + + WSEndpoint p = (WSEndpoint)obj; + if(this == p) + { + return 0; + } + + int v = _resource.compareTo(p._resource); + if(v != 0) + { + return v; + } + + return _delegate.compareTo(p._delegate); + } + + public EndpointI delegate() + { + return _delegate; + } + + @Override + protected boolean checkOption(String option, String argument, String endpoint) + { + switch(option.charAt(1)) + { + case 'r': + { + if(argument == null) + { + throw new Ice.EndpointParseException("no argument provided for -r option in endpoint " + endpoint + + _delegate.options()); + } + _resource = argument; + return true; + } + + default: + { + return false; + } + } + } + + private ProtocolInstance _instance; + private IPEndpointI _delegate; + private String _resource; +} |