Package io.javago

Interface Channel<T>

Type Parameters:
T - the type of messages handled by the channel
All Superinterfaces:
AutoCloseable, InputChannel<T>, Iterable<T>, OutputChannel<T>
All Known Implementing Classes:
BufferedQueueChannel

public interface Channel<T> extends InputChannel<T>, OutputChannel<T>
The Channel interface defines the operations to create Go's channel in Java that can send and receive messages of a specified type. It extends AutoCloseable to support resource management and Iterable to allow for iteration over the messages in the channel.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the channel.
    boolean
    Waits until the channel has another message.
    boolean
    Waits until the channel has space for another message or is closed.
    boolean
    Checks if the channel is closed.
    boolean
    Checks if the channel is empty.
    boolean
    Checks if the channel is full.
    static <T> Channel<T>
    Creates a new channel with a default capacity.
    static <T> Channel<T>
    make(int capacity)
    Creates a new channel with the specified capacity.
    Receives a message from the channel, waiting if necessary for a message to be sent.
    void
    send(T message)
    Sends a message through the channel, waiting if necessary for space to become available.

    Methods inherited from interface java.lang.Iterable

    forEach, iterator, spliterator
  • Method Details

    • send

      void send(T message)
      Sends a message through the channel, waiting if necessary for space to become available.
      Specified by:
      send in interface OutputChannel<T>
      Parameters:
      message - the message to be sent
      Throws:
      IllegalStateException - if the channel
    • receive

      T receive()
      Receives a message from the channel, waiting if necessary for a message to be sent.
      Specified by:
      receive in interface InputChannel<T>
      Returns:
      the received message
      Throws:
      NoSuchElementException - if the channel is both closed and empty
    • isClosed

      boolean isClosed()
      Checks if the channel is closed.
      Specified by:
      isClosed in interface InputChannel<T>
      Specified by:
      isClosed in interface OutputChannel<T>
      Returns:
      true if the channel is closed, false otherwise
    • close

      void close()
      Closes the channel. Once closed, no more messages can be sent, but any remaining messages can still be received. Closing an already closed channel has no effect.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface InputChannel<T>
      Specified by:
      close in interface OutputChannel<T>
    • isEmpty

      boolean isEmpty()
      Checks if the channel is empty.
      Specified by:
      isEmpty in interface InputChannel<T>
      Specified by:
      isEmpty in interface OutputChannel<T>
      Returns:
      true if the channel is empty, false otherwise
    • isFull

      boolean isFull()
      Checks if the channel is full.
      Specified by:
      isFull in interface InputChannel<T>
      Specified by:
      isFull in interface OutputChannel<T>
      Returns:
      true if the channel is full, false otherwise
    • hasSpace

      boolean hasSpace()
      Waits until the channel has space for another message or is closed.
      Specified by:
      hasSpace in interface InputChannel<T>
      Specified by:
      hasSpace in interface OutputChannel<T>
      Returns:
      true if the channel has space, false if the channel is closed
    • hasNext

      boolean hasNext()
      Waits until the channel has another message.
      Specified by:
      hasNext in interface InputChannel<T>
      Specified by:
      hasNext in interface OutputChannel<T>
      Returns:
      true if there are more messages, false if the channel is both closed and empty.
    • make

      static <T> Channel<T> make()
      Creates a new channel with a default capacity.
      Type Parameters:
      T - the type of messages handled by the channel
      Returns:
      a new Channel instance
    • make

      static <T> Channel<T> make(int capacity)
      Creates a new channel with the specified capacity.
      Type Parameters:
      T - the type of messages handled by the channel
      Parameters:
      capacity - the capacity of the channel
      Returns:
      a new Channel instance with the specified capacity