net.i2p.internal
Class I2CPMessageQueue

java.lang.Object
  extended by 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());