/** Creates a <code>BridgeServerResponse</code> in response to the given request. */ static BridgeServerResponse create(DistributionManager dm, BridgeServerRequest request) { BridgeServerResponse m = new BridgeServerResponse(); m.setRecipient(request.getSender()); try { GemFireCacheImpl cache = (GemFireCacheImpl) CacheFactory.getInstanceCloseOk(dm.getSystem()); if (request.getCacheId() != System.identityHashCode(cache)) { m.bridgeInfo = null; } else { int operation = request.getOperation(); switch (operation) { case BridgeServerRequest.ADD_OPERATION: { BridgeServerImpl bridge = (BridgeServerImpl) cache.addBridgeServer(); m.bridgeInfo = new RemoteBridgeServer(bridge); break; } case BridgeServerRequest.INFO_OPERATION: { int id = request.getBridgeId(); // Note that since this is only an informational request // it is not necessary to synchronize on allBridgeServersLock for (Iterator iter = cache.getBridgeServers().iterator(); iter.hasNext(); ) { BridgeServerImpl bridge = (BridgeServerImpl) iter.next(); if (System.identityHashCode(bridge) == id) { m.bridgeInfo = new RemoteBridgeServer(bridge); break; } else { m.bridgeInfo = null; } } break; } case BridgeServerRequest.START_OPERATION: { RemoteBridgeServer config = request.getBridgeInfo(); for (Iterator iter = cache.getBridgeServers().iterator(); iter.hasNext(); ) { BridgeServerImpl bridge = (BridgeServerImpl) iter.next(); if (System.identityHashCode(bridge) == config.getId()) { bridge.configureFrom(config); bridge.start(); m.bridgeInfo = new RemoteBridgeServer(bridge); break; } else { m.bridgeInfo = null; } } break; } case BridgeServerRequest.STOP_OPERATION: { RemoteBridgeServer config = request.getBridgeInfo(); for (Iterator iter = cache.getBridgeServers().iterator(); iter.hasNext(); ) { BridgeServerImpl bridge = (BridgeServerImpl) iter.next(); if (System.identityHashCode(bridge) == config.getId()) { bridge.stop(); m.bridgeInfo = new RemoteBridgeServer(bridge); break; } else { m.bridgeInfo = null; } } break; } default: Assert.assertTrue(false, "Unknown bridge server operation: " + operation); } } } catch (CancelException ex) { m.bridgeInfo = null; } catch (Exception ex) { m.exception = ex; m.bridgeInfo = null; } return m; }