/** * Process the payload for this channel. This should be called whenever * a new value needs to be processed. The handler will take care of * using the correct {@link DataSourceTypeAdapter} * for each read monitor that was setup. * * @param payload the payload of for this type of channel */ protected synchronized final void processMessage(MessagePayload payload) { if (log.isLoggable(Level.FINEST)) { log.log(Level.FINEST, "processMessage for channel {0} messagePayload {1}", new Object[]{getChannelName(), payload}); } lastMessage = payload; for (MonitorHandler monitor : monitors.values()) { monitor.processValue(payload); } }
private void guardedDisconnect() { if (getUsageCounter() == 0) { try { disconnect(); if (!saveMessageAfterDisconnect()) { lastMessage = null; } connectionPayload = null; } catch (RuntimeException ex) { reportExceptionToAllReadersAndWriters(ex); log.log(Level.WARNING, "Couldn't disconnect channel " + getChannelName(), ex); } } }
/** * 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); } }