@Override public void run() { long correlationId = clientMessage.getCorrelationId(); final EventHandler eventHandler = eventHandlerMap.get(correlationId); if (eventHandler == null) { logger.warning("No eventHandler for callId: " + correlationId + ", event: " + clientMessage); return; } eventHandler.handle(clientMessage); }
protected void invoke(ClientRegistrationKey registrationKey, Connection connection) throws Exception { //This method should only be called from registrationExecutor assert (Thread.currentThread().getName().contains("eventRegistration")); Map<Connection, ClientEventRegistration> registrationMap = registrations.get(registrationKey); if (registrationMap.containsKey(connection)) { return; } ListenerMessageCodec codec = registrationKey.getCodec(); ClientMessage request = codec.encodeAddRequest(registersLocalOnly()); EventHandler handler = registrationKey.getHandler(); handler.beforeListenerRegister(); ClientInvocation invocation = new ClientInvocation(client, request, null, connection); invocation.setEventHandler(handler); ClientInvocationFuture future = invocation.invokeUrgent(); ClientMessage clientMessage; try { clientMessage = future.get(); } catch (Exception e) { throw ExceptionUtil.rethrow(e, Exception.class); } String serverRegistrationId = codec.decodeAddResponse(clientMessage); handler.onListenerRegister(); long correlationId = request.getCorrelationId(); ClientEventRegistration registration = new ClientEventRegistration(serverRegistrationId, correlationId, connection, codec); registrationMap.put(connection, registration); }
protected void invoke(ClientRegistrationKey registrationKey, Connection connection) throws Exception { //This method should only be called from registrationExecutor assert (Thread.currentThread().getName().contains("eventRegistration")); Map<Connection, ClientEventRegistration> registrationMap = registrations.get(registrationKey); if (registrationMap.containsKey(connection)) { return; } ListenerMessageCodec codec = registrationKey.getCodec(); ClientMessage request = codec.encodeAddRequest(registersLocalOnly()); EventHandler handler = registrationKey.getHandler(); handler.beforeListenerRegister(); ClientInvocation invocation = new ClientInvocation(client, request, null, connection); invocation.setEventHandler(handler); ClientInvocationFuture future = invocation.invokeUrgent(); ClientMessage clientMessage; try { clientMessage = future.get(); } catch (Exception e) { throw ExceptionUtil.rethrow(e, Exception.class); } String serverRegistrationId = codec.decodeAddResponse(clientMessage); handler.onListenerRegister(); long correlationId = request.getCorrelationId(); ClientEventRegistration registration = new ClientEventRegistration(serverRegistrationId, correlationId, connection, codec); registrationMap.put(connection, registration); }
@Override public void run() { long correlationId = clientMessage.getCorrelationId(); final EventHandler eventHandler = eventHandlerMap.get(correlationId); if (eventHandler == null) { logger.warning("No eventHandler for callId: " + correlationId + ", event: " + clientMessage); return; } eventHandler.handle(clientMessage); }