/** * send a cluster message to one member * * @param msg message to transfer * @param dest Receiver member * @see org.apache.catalina.ha.CatalinaCluster#send(org.apache.catalina.ha.ClusterMessage, * org.apache.catalina.tribes.Member) */ @Override public void send(ClusterMessage msg, Member dest) { try { msg.setAddress(getLocalMember()); int sendOptions = channelSendOptions; if (msg instanceof SessionMessage && ((SessionMessage) msg).getEventType() == SessionMessage.EVT_ALL_SESSION_DATA) { sendOptions = Channel.SEND_OPTIONS_SYNCHRONIZED_ACK | Channel.SEND_OPTIONS_USE_ACK; } if (dest != null) { if (!getLocalMember().equals(dest)) { channel.send(new Member[] {dest}, msg, sendOptions); } else log.error(sm.getString("simpleTcpCluster.unableSend.localMember", msg)); } else { Member[] destmembers = channel.getMembers(); if (destmembers.length > 0) channel.send(destmembers, msg, sendOptions); else if (log.isDebugEnabled()) log.debug("No members in cluster, ignoring message:" + msg); } } catch (Exception x) { log.error(sm.getString("simpleTcpCluster.sendFailed"), x); } }
@Override public void messageReceived(Serializable message, Member sender) { ClusterMessage fwd = (ClusterMessage) message; fwd.setAddress(sender); messageReceived(fwd); }