/** * Return the URIs organized by transport. * <p/> * NOTE: because this relies on gatewayContext, we cannot call it until after the service context has been completely set up * (and in fact not until GatewayContextResolver has constructed, as it doesn't create the DefaultGatewayContext until the * last step in construction. * * @param uris * @return */ private Map<Transport, List<String>> getURIsByTransport(Collection<String> uris) { Map<Transport, List<String>> urisByTransport = new HashMap<>(); // iterate over URIs and group them by transport for (String uri : uris) { String uriScheme = getScheme(uri); Transport transport = transportFactory.getTransportForScheme(uriScheme); List<String> list = urisByTransport.get(transport); if (list == null) { list = new ArrayList<>(); urisByTransport.put(transport, list); } list.add(uri); } return urisByTransport; }
@Override public ConnectFuture connect(ResourceAddress address, final IoHandler connectHandler, final IoSessionInitializer<ConnectFuture> connectSessionInitializer) { String uriScheme = getScheme(address.getExternalURI()); Transport transport = transportFactory.getTransportForScheme(uriScheme); BridgeConnector connector = transport.getConnector(address); return connector.connect(address, connectHandler, new IoSessionInitializer<ConnectFuture>() { @Override public void initializeSession(IoSession session, ConnectFuture future) { sessionInitializer.initializeSession(session, future); if (connectSessionInitializer != null) { connectSessionInitializer.initializeSession(session, future); } } }); }
private void bindConnectIfNecessary(ResourceAddress connectAddress) { if (connectAddress.getOption(CONNECT_REQUIRES_INIT)) { final URI transportURI = connectAddress.getResource(); final String transportSchemeName = transportURI.getScheme(); Transport transport = transportFactory.getTransportForScheme(transportSchemeName); assert transport != null; transport.getConnector(connectAddress).connectInit(connectAddress); } else { ResourceAddress connectTransport = connectAddress.getOption(TRANSPORT); if (connectTransport != null) { bindConnectIfNecessary(connectTransport); } } }
private void unbindConnectIfNecessary(ResourceAddress connectAddress) { if (connectAddress.getOption(CONNECT_REQUIRES_INIT)) { final URI transportURI = connectAddress.getResource(); final String transportSchemeName = transportURI.getScheme(); Transport transport = transportFactory.getTransportForScheme(transportSchemeName); assert transport != null; transport.getConnector(connectAddress).connectDestroy(connectAddress); } else { ResourceAddress connectTransport = connectAddress.getOption(TRANSPORT); if (connectTransport != null) { unbindConnectIfNecessary(connectTransport); } } }
Transport transport = transportFactory.getTransportForScheme(uriScheme); ResourceAddress address = bindings.remove(uri); if (address != null) {