blob: 58c01b433d1fa1c03a03e32b0442768c1bc1608e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.distributed.internal.membership.gms.messenger;
import org.jgroups.Address;
import org.jgroups.JChannel;
import org.jgroups.Message;
import org.apache.geode.internal.Version;
public class GMSPingPonger {
private byte[] pingInBytes = new byte[] {'p', 'i', 'n', 'g'};
private byte[] pongInBytes = new byte[] {'p', 'o', 'n', 'g'};
public boolean isPingMessage(byte[] buffer) {
return buffer.length == 4
&& (buffer[0] == 'p' && buffer[1] == 'i' && buffer[2] == 'n' && buffer[3] == 'g');
}
public boolean isPongMessage(byte[] buffer) {
return buffer.length == 4
&& (buffer[0] == 'p' && buffer[1] == 'o' && buffer[2] == 'n' && buffer[3] == 'g');
}
public void sendPongMessage(JChannel channel, Address src, Address dest) throws Exception {
channel.send(createPongMessage(src, dest));
}
public Message createPongMessage(Address src, Address dest) {
return createJGMessage(pongInBytes, src, dest, Version.CURRENT_ORDINAL);
}
public Message createPingMessage(Address src, Address dest) {
return createJGMessage(pingInBytes, src, dest, Version.CURRENT_ORDINAL);
}
public void sendPingMessage(JChannel channel, Address src, JGAddress dest) throws Exception {
channel.send(createPingMessage(src, dest));
}
private Message createJGMessage(byte[] msgBytes, Address src, Address dest, short version) {
Message msg = new Message();
msg.setDest(dest);
msg.setSrc(src);
msg.setObject(msgBytes);
msg.setFlag(Message.Flag.NO_RELIABILITY);
msg.setFlag(Message.Flag.NO_FC);
msg.setFlag(Message.Flag.DONT_BUNDLE);
msg.setFlag(Message.Flag.OOB);
return msg;
}
}