forked from I2P_Developers/i2p.i2p
as added by 'dream' in late 2011. Testing couldn't have happened, as they don't work and can't ever work as designed. Channels must have underlying file descriptors unless you implement your own Selector and that would probably require JNI. See http://zzz.i2p/topics/1229 for details. Also http://stackoverflow.com/questions/911780/how-do-i-define-my-own-selectablechannel
120 lines
3.5 KiB
Java
120 lines
3.5 KiB
Java
package net.i2p.client.streaming;
|
|
|
|
import java.io.Closeable;
|
|
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 extends Closeable {
|
|
/**
|
|
* @return the Destination of this side of the socket.
|
|
*/
|
|
public Destination getThisDestination();
|
|
|
|
/**
|
|
* @return the destination of the peer.
|
|
*/
|
|
public Destination getPeerDestination();
|
|
|
|
/**
|
|
* As of 0.9.9 will throw an IOE if socket is closed.
|
|
* Prior to that would return null instead of throwing IOE.
|
|
*
|
|
* @return an InputStream to read from the socket. Non-null since 0.9.9.
|
|
* @throws IOException on failure
|
|
*/
|
|
public InputStream getInputStream() throws IOException;
|
|
|
|
/**
|
|
* As of 0.9.9 will throw an IOE if socket is closed.
|
|
* Prior to that would return null instead of throwing IOE.
|
|
*
|
|
* @return an OutputStream to write into the socket. Non-null since 0.9.9.
|
|
* @throws IOException on failure
|
|
*/
|
|
public OutputStream getOutputStream() throws IOException;
|
|
|
|
/**
|
|
* Unimplemented, unlikely to ever be implemented.
|
|
*
|
|
* @deprecated
|
|
* @return null always
|
|
* @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);
|
|
|
|
public boolean isClosed();
|
|
|
|
/**
|
|
* Deprecated, unimplemented, does nothing
|
|
*/
|
|
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();
|
|
|
|
/**
|
|
* Deprecated, unimplemented, does nothing. Original description:
|
|
*
|
|
* 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();
|
|
}
|
|
}
|