Package org.agilewiki.jactor.pubsub.publish

Source Code of org.agilewiki.jactor.pubsub.publish.Sub

package org.agilewiki.jactor.pubsub.publish;

import junit.framework.TestCase;
import org.agilewiki.jactor.*;
import org.agilewiki.jactor.lpc.JLPCActor;
import org.agilewiki.jactor.lpc.Request;
import org.agilewiki.jactor.pubsub.publisher.*;
import org.agilewiki.jactor.pubsub.subscriber.JASubscriber;
import org.agilewiki.jactor.pubsub.subscriber.Subscriber;

/**
* Test code.
*/
public class PublishTest extends TestCase {
    public void test() {
        MailboxFactory mailboxFactory = JAMailboxFactory.newMailboxFactory(1);
        try {
            JAFuture future = new JAFuture();
            Mailbox mailbox = mailboxFactory.createMailbox();
            Req req = new Req();
            Publish publish = new Publish(req);
            int c = 0;
            Sub s = new Sub();
            s.initialize(mailbox);
            s.setActorName("foo");
            JAPublisher p = new JAPublisher();
            p.initialize(mailbox);
            c = publish.send(future, p);
            assertEquals(0, c);
            (new Subscribe(s)).send(future, p);
            GetSubscriber getSubscriber = new GetSubscriber("foo");
            Subscriber s1 = getSubscriber.send(future, p);
            assertEquals(s, s1);
            c = publish.send(future, p);
            assertEquals(1, c);
            (new Unsubscribe(s)).send(future, p);
            c = publish.send(future, p);
            assertEquals(0, c);
        } catch (Throwable e) {
            e.printStackTrace();
        } finally {
            mailboxFactory.close();
        }
    }
}

/**
* Test code.
*/
class Sub extends JASubscriber {
    void req() {
    }
}

/**
* Test code.
*/
class Req extends Request<Object, Sub> {

    @Override
    public boolean isTargetType(Actor targetActor) {
        return targetActor instanceof Sub;
    }

    @Override
    public void processRequest(JLPCActor targetActor, RP rp) throws Exception {
        ((Sub) targetActor).req();
        rp.processResponse(null);
    }
}
TOP

Related Classes of org.agilewiki.jactor.pubsub.publish.Sub

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.