Package org.agilewiki.jactor.pubsub.latency

Source Code of org.agilewiki.jactor.pubsub.latency.Driver

package org.agilewiki.jactor.pubsub.latency;

import org.agilewiki.jactor.RP;
import org.agilewiki.jactor.lpc.JLPCActor;
import org.agilewiki.jactor.pubsub.publisher.JAPublisher;
import org.agilewiki.jactor.pubsub.publisher.Publish;
import org.agilewiki.jactor.pubsub.publisher.Subscribe;
import org.agilewiki.jactor.simpleMachine.ExtendedResponseProcessor;

/**
* Test code.
*/
public class Driver extends JLPCActor implements Src {
    public int r;
    public int s;
    public JAPublisher pub;
    private int count;
    private Publish publish = new Publish(Ping.req);

    public void sender(final RP done, ExtendedResponseProcessor<Integer> erp) throws Exception {
        while (true) {
            if (count == r) {
                done.processResponse(null);
                return;
            }
            count += 1;
            erp.sync = false;
            erp.async = false;
            publish.send(this, pub, erp);
            if (!erp.sync) {
                erp.async = true;
                return;
            }
        }
    }

    @Override
    public void go(final RP rp) throws Exception {
        count = 0;
        int i = 0;
        while (i < s) {
            Sub sub = new Sub();
            sub.initialize(getMailbox());
            sub.setActorName("" + i);
            sub.src = this;
            Subscribe subscribe = new Subscribe(sub);
            subscribe.sendEvent(this, pub);
            i += 1;
        }
        ExtendedResponseProcessor<Integer> erp = new ExtendedResponseProcessor<Integer>() {
            @Override
            public void processResponse(Integer response) throws Exception {
                if (!async)
                    sync = true;
                else
                    sender(rp, this);
            }
        };
        sender(rp, erp);
    }
}
TOP

Related Classes of org.agilewiki.jactor.pubsub.latency.Driver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.