Files
i2p.i2p/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocket.java
zzz f39e201067 * Lower max netdb RI expiration again
* Increase default max tunnels
  * Cleanups after review
  * Exorcism (ticket #476)
2011-10-10 19:22:03 +00:00

110 lines
3.0 KiB
Java

package net.i2p.client.streaming;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.SelectableChannel;
import net.i2p.data.Destination;
/**
* Minimalistic adapter between the socket api and I2PTunnel's way.
* Note that this interface is a "subinterface" of the interface
* defined in the "official" streaming api.
*/
public interface I2PSocket {
/**
* @return the Destination of this side of the socket.
*/
public Destination getThisDestination();
/**
* @return the destination of the peer.
*/
public Destination getPeerDestination();
/**
* @return an InputStream to read from the socket.
* @throws IOException on failure
*/
public InputStream getInputStream() throws IOException;
/**
* @return an OutputStream to write into the socket.
* @throws IOException on failure
*/
public OutputStream getOutputStream() throws IOException;
/**
* @since 0.8.9
*/
public SelectableChannel getChannel() throws IOException;
/**
* @return socket's configuration
*/
public I2PSocketOptions getOptions();
/**
* Configure the socket
* @param options I2PSocketOptions to set
*/
public void setOptions(I2PSocketOptions options);
/**
* How long we will wait blocked on a read() operation. This is simply a
* helper to query the I2PSocketOptions
*
* @return milliseconds to wait, or -1 if we will wait indefinitely
*/
public long getReadTimeout();
/**
* Define how long we will wait blocked on a read() operation (-1 will make
* the socket wait forever). This is simply a helper to adjust the
* I2PSocketOptions
*
* @param ms timeout in ms
*/
public void setReadTimeout(long ms);
/**
* Closes the socket if not closed yet
* @throws IOException on failure
*/
public void close() throws IOException;
public boolean isClosed();
public void setSocketErrorListener(SocketErrorListener lsnr);
/**
* The remote port.
* @return Default I2PSession.PORT_UNSPECIFIED (0) or PORT_ANY (0)
* @since 0.8.9
*/
public int getPort();
/**
* The local port.
* @return Default I2PSession.PORT_UNSPECIFIED (0) or PORT_ANY (0)
* @since 0.8.9
*/
public int getLocalPort();
/**
* Allow notification of underlying errors communicating across I2P without
* waiting for any sort of cleanup process. For example, if some data could
* not be sent, this listener is notified immediately, and while the input/output
* streams are notified through IOExceptions, they are told only after the
* TCP-like stream is closed (which may be a minute later, if the close message
* times out as well). This is not fired on normal close() activity.
*
*/
public interface SocketErrorListener {
/**
* An error occurred communicating with the peer.
*/
void errorOccurred();
}
}