/*
* Galaxy
* Copyright (c) 2012-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.galaxy.jgroups;
import org.jgroups.Address;
import org.jgroups.ChannelListener;
import org.jgroups.Message;
import org.jgroups.Receiver;
import org.jgroups.View;
import org.jgroups.stack.Protocol;
import org.jgroups.util.UUID;
/**
*
* @author pron
*/
public class ChannelExtender implements ExtendedChannel {
private final Channel channel;
public ChannelExtender(Channel jchannel) {
this.channel = jchannel;
}
@Override
public void send(Address dst, byte[] buf, int offset, int length) throws Exception {
send(new Message(dst, null, buf, offset, length));
}
@Override
public void send(Address dst, byte[] buf) throws Exception {
send(new Message(dst, null, buf));
}
@Override
public void send(Address dst, Object obj) throws Exception {
send(new Message(dst, null, obj));
}
@Override
public String getViewAsString() {
final View v = getView();
return v != null ? v.toString() : "n/a";
}
@Override
public String getAddressAsUUID() {
return getAddress() instanceof UUID ? ((UUID) getAddress()).toStringLong() : null;
}
@Override
public String getAddressAsString() {
return getAddress() != null ? getAddress().toString() : "n/a";
}
@Override
public void setDiscardOwnMessages(boolean flag) {
channel.setDiscardOwnMessages(flag);
}
@Override
public boolean getDiscardOwnMessages() {
return channel.getDiscardOwnMessages();
}
@Override
public void removeChannelListener(ChannelListener listener) {
channel.removeChannelListener(listener);
}
@Override
public void addChannelListener(ChannelListener listener) {
channel.addChannelListener(listener);
}
@Override
public void setReceiver(Receiver r) {
channel.setReceiver(r);
}
@Override
public Receiver getReceiver() {
return channel.getReceiver();
}
@Override
public void send(Message msg) throws Exception {
channel.send(msg);
}
@Override
public boolean isOpen() {
return channel.isOpen();
}
@Override
public boolean isConnected() {
return channel.isConnected();
}
@Override
public View getView() {
return channel.getView();
}
@Override
public void getState(Address target, long timeout, boolean useFlushIfPresent) throws Exception {
channel.getState(target, timeout, useFlushIfPresent);
}
public void getState(Address target, long timeout) throws Exception {
getState(target, timeout, true);
}
@Override
public String getName(Address member) {
return channel.getName(member);
}
@Override
public String getName() {
return channel.getName();
}
@Override
public String getClusterName() {
return channel.getClusterName();
}
@Override
public Address getAddress() {
return channel.getAddress();
}
@Override
public <T extends Protocol> boolean hasProtocol(Class<T> protocolType) {
return channel.hasProtocol(protocolType);
}
}