Package org.jcsp.lang

Class BufferedOne2OneChannelIntImpl

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Alternative alt
      The Alternative class that controls the selection
      private ChannelDataStoreInt data
      The ChannelDataStoreInt used to store the data for the channel
      private java.lang.Object rwMonitor
      The monitor synchronising reader and writer on this channel
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void endRead()  
      AltingChannelInputInt in()
      Returns the AltingChannelInputInt object to use for this channel.
      ChannelOutputInt out()
      Returns the ChannelOutputInt object to use for this channel.
      int read()
      Reads an int from the channel.
      boolean readerDisable()
      turns off Alternative selection for the channel.
      boolean readerEnable​(Alternative alt)
      turns on Alternative selection for the channel.
      boolean readerPending()
      Returns whether there is data pending on this channel.
      void readerPoison​(int strength)  
      int startRead()  
      void write​(int value)
      Writes an int to the channel.
      void writerPoison​(int strength)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • rwMonitor

        private java.lang.Object rwMonitor
        The monitor synchronising reader and writer on this channel
      • alt

        private Alternative alt
        The Alternative class that controls the selection
      • data

        private final ChannelDataStoreInt data
        The ChannelDataStoreInt used to store the data for the channel
    • Constructor Detail

      • BufferedOne2OneChannelIntImpl

        public BufferedOne2OneChannelIntImpl​(ChannelDataStoreInt data)
        Constructs a new BufferedOne2OneChannelIntImpl with the specified ChannelDataStoreInt.
        Parameters:
        data - the ChannelDataStoreInt used to store the data for the channel
    • Method Detail

      • in

        public AltingChannelInputInt in()
        Returns the AltingChannelInputInt object to use for this channel. As One2OneChannelIntImpl implements AltingChannelInputInt itself, this method simply returns a reference to the object that it is called on.
        Specified by:
        in in interface One2OneChannelInt
        Returns:
        the AltingChannelInputInt object to use for this channel.
      • out

        public ChannelOutputInt out()
        Returns the ChannelOutputInt object to use for this channel. As One2OneChannelIntImpl implements ChannelOutputInt itself, this method simply returns a reference to the object that it is called on.
        Specified by:
        out in interface One2OneChannelInt
        Returns:
        the ChannelOutputInt object to use for this channel.
      • read

        public int read()
        Reads an int from the channel.
        Specified by:
        read in interface ChannelInternalsInt
        Returns:
        the integer read from the channel.
      • write

        public void write​(int value)
        Writes an int to the channel.
        Specified by:
        write in interface ChannelInternalsInt
        Parameters:
        value - the integer to write to the channel.
      • readerEnable

        public boolean readerEnable​(Alternative alt)
        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 interface ChannelInternalsInt
        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 interface ChannelInternalsInt
        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 ()) {
             int x = c.read ();
             ...  do something with x
           } else (
             ...  do something else
           }
         
        is equivalent to:
           if (c_pending.priSelect () == 0) {
             int 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 interface ChannelInternalsInt
        Returns:
        state of the channel.