Search in sources :

Example 91 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class ChannelCoordinator method internalStart.

/**
 * Starts up the channel. This can be called multiple times for individual services to start
 * The svc parameter can be the logical or value of any constants
 * @param svc int value of <BR>
 * DEFAULT - will start all services <BR>
 * MBR_RX_SEQ - starts the membership receiver <BR>
 * MBR_TX_SEQ - starts the membership broadcaster <BR>
 * SND_TX_SEQ - starts the replication transmitter<BR>
 * SND_RX_SEQ - starts the replication receiver<BR>
 * @throws ChannelException if a startup error occurs or the service is already started.
 */
protected synchronized void internalStart(int svc) throws ChannelException {
    try {
        boolean valid = false;
        // make sure we don't pass down any flags that are unrelated to the bottom layer
        svc = svc & Channel.DEFAULT;
        if (startLevel == Channel.DEFAULT) {
            // we have already started up all components
            return;
        }
        if (svc == 0) {
            // nothing to start
            return;
        }
        if (svc == (svc & startLevel)) {
            throw new ChannelException(sm.getString("channelCoordinator.alreadyStarted", Integer.toString(svc)));
        }
        // listens to with the local membership settings
        if (Channel.SND_RX_SEQ == (svc & Channel.SND_RX_SEQ)) {
            clusterReceiver.setMessageListener(this);
            clusterReceiver.setChannel(getChannel());
            clusterReceiver.start();
            // synchronize, big time FIXME
            Member localMember = getChannel().getLocalMember(false);
            if (localMember instanceof StaticMember) {
                // static member
                StaticMember staticMember = (StaticMember) localMember;
                staticMember.setHost(getClusterReceiver().getHost());
                staticMember.setPort(getClusterReceiver().getPort());
                staticMember.setSecurePort(getClusterReceiver().getSecurePort());
            } else {
                // multicast member
                membershipService.setLocalMemberProperties(getClusterReceiver().getHost(), getClusterReceiver().getPort(), getClusterReceiver().getSecurePort(), getClusterReceiver().getUdpPort());
            }
            valid = true;
        }
        if (Channel.SND_TX_SEQ == (svc & Channel.SND_TX_SEQ)) {
            clusterSender.setChannel(getChannel());
            clusterSender.start();
            valid = true;
        }
        if (Channel.MBR_RX_SEQ == (svc & Channel.MBR_RX_SEQ)) {
            membershipService.setMembershipListener(this);
            membershipService.setChannel(getChannel());
            if (membershipService instanceof McastService) {
                ((McastService) membershipService).setMessageListener(this);
            }
            membershipService.start(MembershipService.MBR_RX);
            valid = true;
        }
        if (Channel.MBR_TX_SEQ == (svc & Channel.MBR_TX_SEQ)) {
            membershipService.setChannel(getChannel());
            membershipService.start(MembershipService.MBR_TX);
            valid = true;
        }
        if (!valid) {
            throw new IllegalArgumentException(sm.getString("channelCoordinator.invalid.startLevel"));
        }
        startLevel = (startLevel | svc);
    } catch (ChannelException cx) {
        throw cx;
    } catch (Exception x) {
        throw new ChannelException(x);
    }
}
Also used : StaticMember(org.apache.catalina.tribes.membership.StaticMember) Member(org.apache.catalina.tribes.Member) StaticMember(org.apache.catalina.tribes.membership.StaticMember) ChannelException(org.apache.catalina.tribes.ChannelException) ChannelException(org.apache.catalina.tribes.ChannelException) McastService(org.apache.catalina.tribes.membership.McastService)

Example 92 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class McastServiceImpl method memberDataReceived.

private void memberDataReceived(byte[] data) {
    final Member m = MemberImpl.getMember(data);
    if (log.isTraceEnabled()) {
        log.trace("Mcast receive ping from member " + m);
    }
    Runnable t = null;
    if (Arrays.equals(m.getCommand(), Member.SHUTDOWN_PAYLOAD)) {
        if (log.isDebugEnabled()) {
            log.debug("Member has shutdown:" + m);
        }
        membership.removeMember(m);
        t = () -> {
            String name = Thread.currentThread().getName();
            try {
                Thread.currentThread().setName("Membership-MemberDisappeared");
                service.memberDisappeared(m);
            } finally {
                Thread.currentThread().setName(name);
            }
        };
    } else if (membership.memberAlive(m)) {
        if (log.isDebugEnabled()) {
            log.debug("Mcast add member " + m);
        }
        t = () -> {
            String name = Thread.currentThread().getName();
            try {
                Thread.currentThread().setName("Membership-MemberAdded");
                service.memberAdded(m);
            } finally {
                Thread.currentThread().setName(name);
            }
        };
    }
    // end if
    if (t != null) {
        executor.execute(t);
    }
}
Also used : Member(org.apache.catalina.tribes.Member)

Example 93 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class SocketNioReceive method main.

public static void main(String[] args) throws Exception {
    Member mbr = new MemberImpl("localhost", 9999, 0);
    ChannelData data = new ChannelData();
    data.setAddress(mbr);
    byte[] buf = new byte[8192 * 4];
    data.setMessage(new XByteBuffer(buf, false));
    buf = XByteBuffer.createDataPackage(data);
    len = buf.length;
    NioReceiver receiver = new NioReceiver();
    receiver.setPort(9999);
    receiver.setHost("localhost");
    MyList list = new MyList();
    receiver.setMessageListener(list);
    receiver.start();
    System.out.println("Listening on 9999");
    while (true) {
        try {
            Thread.sleep(5000);
            if (start != 0) {
                System.out.println("Throughput " + df.format(mb / seconds) + " MB/seconds, messages " + count + " accepts " + accept + ", total " + mb + " MB.");
            }
        } catch (Throwable x) {
            x.printStackTrace();
        }
    }
}
Also used : XByteBuffer(org.apache.catalina.tribes.io.XByteBuffer) NioReceiver(org.apache.catalina.tribes.transport.nio.NioReceiver) ChannelData(org.apache.catalina.tribes.io.ChannelData) MemberImpl(org.apache.catalina.tribes.membership.MemberImpl) Member(org.apache.catalina.tribes.Member)

Aggregations

Member (org.apache.catalina.tribes.Member)93 ChannelException (org.apache.catalina.tribes.ChannelException)28 FaultyMember (org.apache.catalina.tribes.ChannelException.FaultyMember)17 Test (org.junit.Test)17 IOException (java.io.IOException)16 MemberImpl (org.apache.catalina.tribes.membership.MemberImpl)15 ReceiverBase (org.apache.catalina.tribes.transport.ReceiverBase)11 ArrayList (java.util.ArrayList)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)10 UniqueId (org.apache.catalina.tribes.UniqueId)9 Serializable (java.io.Serializable)6 BigDecimal (java.math.BigDecimal)6 DecimalFormat (java.text.DecimalFormat)6 Response (org.apache.catalina.tribes.group.Response)6 ChannelData (org.apache.catalina.tribes.io.ChannelData)6 XByteBuffer (org.apache.catalina.tribes.io.XByteBuffer)6 SelectionKey (java.nio.channels.SelectionKey)4 Selector (java.nio.channels.Selector)4 Membership (org.apache.catalina.tribes.membership.Membership)4 StaticMember (org.apache.catalina.tribes.membership.StaticMember)4