next up previous contents
Next: MethodCall Up: PullPushAdapter Previous: PullPushAdapter

Example

public class PullPushTest implements MessageListener {
    private Channel          channel;
    private PullPushAdapter  conv;

    public void Receive(Message msg) {
        System.out.println("Received msg: " + msg);
    }

    public void Start() throws Exception {
        channel=new EnsChannel("PullPushTest", null);
        conv=new PullPushAdapter(channel, 1);
        conv.AddListener(this);
        channel.Connect(1000);        
        for(int i=0; i < 10; i++) {
            channel.Cast(new String("Hello world").getBytes());
            Thread.currentThread().sleep(1000);
        }
        channel.Disconnect();
        channel.Destroy();
    }

    public static void main(String args[]) {
        PullPushTest t=new PullPushTest();
        try {t.Start();}
        catch(Exception e) {System.err.println(e);}
    }
}

Contrary to using channels (using pull-style message reception), here no separate thread has to be allocated to receive message. Instead, a PullPushAdapter is layered on top of the channel and a reference to the client object added. This causes the client's Receive method to be called whenever a message has been received by the PullPushAdapter. Note that compared to the pull-style example, push-style message reception is considerably easier (no separate thread management) and requires less code to program.

For an example showing the use of the pull-style see section 2.2.1.



Bela Ban
1998-08-06