net.i2p.BOB

## Class UDPIOthread

- java.lang.Object
- - net.i2p.BOB.UDPIOthread

- All Implemented Interfaces:
    Runnable, I2PSessionListener

      public class UDPIOthread
      extends Object
      implements I2PSessionListener, Runnable

  UDP IO on I2P FIX ME: Untested, and incomplete! I have no personal need to UDP yet, however alot of p2p apps pretty much demand it. The skeletal frame is here, just needs to be finished.
  Author:
    sponge

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `UDPIOthread(NamedDB info, Log _log, Socket socket, I2PSession _session)` Constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `disconnected(I2PSession session)` required by `I2PSessionListener` to notify of disconnect
    `void` | `errorOccurred(I2PSession session, String message, Throwable error)` required by `I2PSessionListener` to notify of error
    `void` | `messageAvailable(I2PSession session, int msgId, long size)` Instruct the client that the given session has received a message with size # of bytes.
    `void` | `reportAbuse(I2PSession session, int severity)` required by `I2PSessionListener` to notify of abuse
    `void` | `run()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### UDPIOthread

          UDPIOthread(NamedDB info,
                     Log _log,
                     Socket socket,
                     I2PSession _session)

      Constructor
      Parameters:
        `info` -
        `_log` -
        `socket` -
        `_session` -

  - ### Method Detail

    - #### run

          public void run()

      Specified by:
        `run` in interface `Runnable`

    - #### messageAvailable

          public void messageAvailable(I2PSession session,
                              int msgId,
                              long size)

      Description copied from interface: `I2PSessionListener`
      Instruct the client that the given session has received a message with size # of bytes. After this is called, the client should call receiveMessage(msgId). There is currently no method for the client to reject the message. If the client does not call receiveMessage() within a timeout period (currently 30 seconds), the session will delete the message and log an error.
      Specified by:
        `messageAvailable` in interface `I2PSessionListener`
      Parameters:
        `session` -
        `msgId` -
        `size` -

    - #### disconnected

          public void disconnected(I2PSession session)

      required by `I2PSessionListener` to notify of disconnect
      Specified by:
        `disconnected` in interface `I2PSessionListener`

    - #### errorOccurred

          public void errorOccurred(I2PSession session,
                           String message,
                           Throwable error)

      required by `I2PSessionListener` to notify of error
      Specified by:
        `errorOccurred` in interface `I2PSessionListener`
        `error` - can be null? or not?

    - #### reportAbuse

          public void reportAbuse(I2PSession session,
                         int severity)

      required by `I2PSessionListener` to notify of abuse
      Specified by:
        `reportAbuse` in interface `I2PSessionListener`
      Parameters:
        `session` - session to report abuse to
        `severity` - how bad the abuse is