The Channel class defines unbounded fifo files.
class Channel { protected Vector fifo = new Vector(); public void put(Object obj){ fifo.addElement(obj); } public Object get(){ Object res = fifo.firstElement(); fifo.removeElementAt(0); return res; } public boolean isEmpty() { return fifo.isEmpty(); } }
ChannelEnv associates channels to names. The newChannel method always return a new channel with a unique name.
public class ChannelEnv { private Hashtable channelEnv = new Hashtable(); private int localNum = 0; public Channel getChannel(String name) { Channel c = (Channel)channelEnv.get(name); if (c==null){ c = new Channel(); channelEnv.put(name,c); } return c; } /* Strange name, is'nt it ? */ public Channel newChannel(){ return getChannel("@@@local@@@" + (localNum++)); } }