/** * Process the next connection payload. This should be called whenever * the connection state has changed. * * @param connectionPayload connection payload; not null */ protected synchronized final void processConnection(ConnectionPayload connectionPayload) { if (log.isLoggable(Level.FINEST)) { log.log(Level.FINEST, "processConnection for channel {0} connectionPayload {1}", new Object[] {getChannelName(), connectionPayload}); } this.connectionPayload = connectionPayload; setConnected(isConnected(connectionPayload)); setWriteConnected(isWriteConnected(connectionPayload)); for (MonitorHandler monitor : monitors.values()) { monitor.findTypeAdapter(); } if (isConnected() && lastMessage != null && processMessageOnReconnect) { processMessage(lastMessage); } if (!isConnected() && lastMessage != null && processMessageOnDisconnect) { processMessage(lastMessage); } }
@Override protected synchronized void addReader(ChannelHandlerReadSubscription subscription) { readUsageCounter++; MonitorHandler monitor = new MonitorHandler(subscription); monitors.put(subscription, monitor); monitor.findTypeAdapter(); guardedConnect(); if (getUsageCounter() > 1) { if (connectionPayload != null) { monitor.processConnection(isConnected()); } if (lastMessage != null) { monitor.processValue(lastMessage); } } }