net.i2p.router.client
Class QueuedClientConnectionRunner

java.lang.Object
  extended by net.i2p.router.client.ClientConnectionRunner
      extended by net.i2p.router.client.QueuedClientConnectionRunner

 class QueuedClientConnectionRunner
extends ClientConnectionRunner

Zero-copy in-JVM. While super() starts both a reader and a writer thread, we only need a reader thread here.

Since:
0.8.3
Author:
zzz

Field Summary
 
Fields inherited from class net.i2p.router.client.ClientConnectionRunner
_context, _log, _reader
 
Constructor Summary
QueuedClientConnectionRunner(RouterContext context, ClientManager manager, I2CPMessageQueue queue)
          Create a new runner with the given queues
 
Method Summary
(package private)  void doSend(I2CPMessage msg)
          Actually send the I2CPMessage to the client.
 void startRunning()
          Starts the reader thread.
 void stopRunning()
          Calls super() to stop the reader, and sends a poison message to the client.
(package private)  void writeMessage(I2CPMessage msg)
          In super(), doSend queues it to the writer thread and the writer thread calls writeMessage() to write to the output stream.
 
Methods inherited from class net.i2p.router.client.ClientConnectionRunner
ackSendMessage, disconnectClient, disconnectClient, disconnected, distributeMessage, failLeaseRequest, getConfig, getDestHash, getIsDead, getLeaseRequest, getLeaseSet, getNextMessageId, getPayload, getSessionId, getSessionKeyManager, isDead, leaseSetCreated, receiveMessage, removePayload, reportAbuse, requestLeaseSet, sessionEstablished, setLeaseSet, setPayload, setSessionId, updateMessageDeliveryStatus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueuedClientConnectionRunner

public QueuedClientConnectionRunner(RouterContext context,
                                    ClientManager manager,
                                    I2CPMessageQueue queue)
Create a new runner with the given queues

Method Detail

startRunning

public void startRunning()
Starts the reader thread. Does not call super().

Overrides:
startRunning in class ClientConnectionRunner

stopRunning

public void stopRunning()
Calls super() to stop the reader, and sends a poison message to the client.

Overrides:
stopRunning in class ClientConnectionRunner

writeMessage

void writeMessage(I2CPMessage msg)
In super(), doSend queues it to the writer thread and the writer thread calls writeMessage() to write to the output stream. Since we have no writer thread this shouldn't happen.

Overrides:
writeMessage in class ClientConnectionRunner

doSend

void doSend(I2CPMessage msg)
      throws I2CPMessageException
Actually send the I2CPMessage to the client. Nonblocking.

Overrides:
doSend in class ClientConnectionRunner
Throws:
I2CPMessageException - if queue full or on other errors