Mercurial > hg > FederatedLinda
view src/fdl/MetaReply.java @ 99:e3a3bde37dff fuchita
MetaReply print
author | one |
---|---|
date | Wed, 26 May 2010 15:31:01 +0900 |
parents | 8931a3e90c2a |
children |
line wrap: on
line source
package fdl; import java.nio.ByteBuffer; public class MetaReply extends PSXReply { public int id; public TupleSpace ts; public MetaReply(int mode, int id,TupleSpace ts) { this.mode = mode; this.id = id; this.ts = ts; this.command = ByteBuffer.allocate(PSX.LINDA_HEADER_SIZE); } public MetaReply(int mode, int id, TupleSpace ts,PSXCallback callback) { this(mode,id,ts); this.callback = callback; } public MetaReply(int mode, int id, TupleSpace ts,ByteBuffer data, PSXCallback callback) { this(mode,id,ts); this.data = data; this.callback = callback; } void checkTuple() { ByteBuffer data = ts.IN(id, mode, command); if (data!=null) { this.data = data; mode = PSX.PSX_ANSWER; if (callback!=null) callback.callback(data); } } public boolean ready() { switch(mode) { case PSX.PSX_IN: case PSX.PSX_RD: checkTuple(); break; case PSX.PSX_CHECK: data = ts.check1(null, command); if (data!=null) { mode = PSX.PSX_ANSWER; } break; case PSX.PSX_OUT: command=PSX.setCommand(PSX.PSX_OUT, id, 0, data); ts.Out(null, command, data); return true; case PSX.PSX_UPDATE: // TODO: not implemented break; } return mode==PSX.PSX_ANSWER; } public String toString() { return "MetaReply(mode="+mode+"+id="+id+")"; } }