Package org.jcsp.lang
Class PoisonableBufferedOne2OneChannelInt
java.lang.Object
org.jcsp.lang.PoisonableBufferedOne2OneChannelInt
- All Implemented Interfaces:
ChannelInternalsInt
,One2OneChannelInt
class PoisonableBufferedOne2OneChannelInt
extends Object
implements One2OneChannelInt, ChannelInternalsInt
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Alternative
private final ChannelDataStoreInt
The ChannelDataStore used to store the data for the channelprivate int
private int
private final Object
-
Constructor Summary
ConstructorsConstructorDescriptionPoisonableBufferedOne2OneChannelInt
(ChannelDataStoreInt data, int _immunity) Constructs a new BufferedOne2OneChannel with the specified ChannelDataStore. -
Method Summary
Modifier and TypeMethodDescriptionvoid
endRead()
in()
Returns theAltingChannelInput
to use for this channel.private boolean
out()
Returns theChannelOutput
object to use for this channel.int
read()
Reads an Object from the channel.boolean
turns off Alternative selection for the channel.boolean
readerEnable
(Alternative alt) turns on Alternative selection for the channel.boolean
Returns whether there is data pending on this channel.void
readerPoison
(int strength) int
void
write
(int value) Writes an Object to the channel.void
writerPoison
(int strength)
-
Field Details
-
data
The ChannelDataStore used to store the data for the channel -
rwMonitor
-
alt
-
immunity
private int immunity -
poisonStrength
private int poisonStrength
-
-
Constructor Details
-
PoisonableBufferedOne2OneChannelInt
Constructs a new BufferedOne2OneChannel with the specified ChannelDataStore.- Parameters:
data
- the ChannelDataStore used to store the data for the channel
-
-
Method Details
-
isPoisoned
private boolean isPoisoned() -
read
public int read()Reads an Object from the channel.- Specified by:
read
in interfaceChannelInternalsInt
- Returns:
- the object read from the channel.
-
startRead
public int startRead()- Specified by:
startRead
in interfaceChannelInternalsInt
-
endRead
public void endRead()- Specified by:
endRead
in interfaceChannelInternalsInt
-
write
public void write(int value) Writes an Object to the channel.- Specified by:
write
in interfaceChannelInternalsInt
- Parameters:
value
- the object to write to the channel.
-
readerEnable
turns on Alternative selection for the channel. Returns true if the channel has data that can be read immediately.Note: this method should only be called by the Alternative class
- Specified by:
readerEnable
in interfaceChannelInternalsInt
- Parameters:
alt
- the Alternative class which will control the selection- Returns:
- true if the channel has data that can be read, else false
-
readerDisable
public boolean readerDisable()turns off Alternative selection for the channel. Returns true if the channel contained data that can be read.Note: this method should only be called by the Alternative class
- Specified by:
readerDisable
in interfaceChannelInternalsInt
- Returns:
- true if the channel has data that can be read, else false
-
readerPending
public boolean readerPending()Returns whether there is data pending on this channel.Note: if there is, it won't go away until you read it. But if there isn't, there may be some by the time you check the result of this method.
This method is provided for convenience. Its functionality can be provided by Pri Alting the channel against a SKIP guard, although at greater run-time and syntactic cost. For example, the following code fragment:
if (c.pending ()) { Object x = c.read (); ... do something with x } else ( ... do something else }
is equivalent to:if (c_pending.priSelect () == 0) { Object x = c.read (); ... do something with x } else ( ... do something else }
where earlier would have had to have been declared:final Alternative c_pending = new Alternative (new Guard[] {c, new Skip ()});
- Specified by:
readerPending
in interfaceChannelInternalsInt
- Returns:
- state of the channel.
-
in
Returns theAltingChannelInput
to use for this channel. AsBufferedOne2OneChannel
implementsAltingChannelInput
itself, this method simply returns a reference to the object that it is called on.- Specified by:
in
in interfaceOne2OneChannelInt
- Returns:
- the
AltingChannelInput
object to use for this channel.
-
out
Returns theChannelOutput
object to use for this channel. AsBufferedOne2OneChannel
implementsChannelOutput
itself, this method simply returns a reference to the object that it is called on.- Specified by:
out
in interfaceOne2OneChannelInt
- Returns:
- the
ChannelOutput
object to use for this channel.
-
writerPoison
public void writerPoison(int strength) - Specified by:
writerPoison
in interfaceChannelInternalsInt
-
readerPoison
public void readerPoison(int strength) - Specified by:
readerPoison
in interfaceChannelInternalsInt
-