package net.i2p.client; /* * free (adj.): unencumbered; not under the control of others * Written by jrandom in 2003 and released into the public domain * with no warranty of any kind, either expressed or implied. * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ /** * Define a means for the router to asynchronously notify the client that a * new message is available or the router is under attack. * * A client must implement and register this via addSessionListener() * to receive messages. * * If you wish to get notification of the protocol, from port, and to port, * or wish to get notification of certain protocols and ports only, * you must use I2PSessionMuxedListener and addMuxedSessionListener() instead. * * @author jrandom */ public 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. * * @param session session to notify * @param msgId message number available * @param size size of the message - why it's a long and not an int is a mystery */ void messageAvailable(I2PSession session, int msgId, long size); /** Instruct the client that the session specified seems to be under attack * and that the client may wish to move its destination to another router. * * Unused. Not fully implemented. * * @param session session to report abuse to * @param severity how bad the abuse is */ void reportAbuse(I2PSession session, int severity); /** * Notify the client that the session has been terminated * */ void disconnected(I2PSession session); /** * Notify the client that some error occurred * * @param error can be null? or not? */ void errorOccurred(I2PSession session, String message, Throwable error); }