## net.i2p.internal
Class I2CPMessageQueue

    java.lang.Object
      net.i2p.internal.I2CPMessageQueue

Direct Known Subclasses:
  I2CPMessageQueueImpl

    public abstract class I2CPMessageQueue

extends Object

Contains the methods to talk to a router or client via I2CP, when both are in the same JVM. This interface contains methods to access two queues, one for transmission and one for receiving. The methods are identical to those in java.util.concurrent.BlockingQueue. Reading may be done in a thread using the QueuedI2CPMessageReader class. Non-blocking writing may be done directly with offer().

Since:
  0.8.3
Author:
  zzz

Constructor Summary
`I2CPMessageQueue()`

Method Summary
`void` `close()` == offer(new PoisonI2CPMessage());
`abstract boolean` `offer(I2CPMessage msg)` Send a message, nonblocking.
`abstract I2CPMessage` `poll()` Receive a message, nonblocking.
`abstract void` `put(I2CPMessage msg)` Send a message, blocking until space is available.
`abstract I2CPMessage` `take()` Receive a message, blocking until one is available.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### I2CPMessageQueue

    public I2CPMessageQueue()

Method Detail

### offer

    public abstract boolean offer(I2CPMessage msg)

  Send a message, nonblocking.

  Returns:
    success (false if no space available)

### poll

    public abstract I2CPMessage poll()

  Receive a message, nonblocking. Unused for now.

  Returns:
    message or null if none available

### put

    public abstract void put(I2CPMessage msg)
                      throws InterruptedException

  Send a message, blocking until space is available. Unused for now.

  Throws:
    `InterruptedException`

### take

    public abstract I2CPMessage take()
                              throws InterruptedException

  Receive a message, blocking until one is available.

  Returns:
    message
  Throws:
    `InterruptedException`

### close

    public void close()

  == offer(new PoisonI2CPMessage());