blob: 43441462f9e28d322954b9420987f9c7b6e67bae [file] [log] [blame]
/*
*/
package org.apache.tomcat.lite.io;
import java.io.IOException;
import java.util.Timer;
/**
* Factory for IOChannels, with support for caching.
*
*
* @author Costin Manolache
*/
public abstract class IOConnector {
public static interface DataReceivedCallback {
/**
* Called when data or EOF has been received.
*/
public void handleReceived(IOChannel ch) throws IOException;
}
/**
* Callback for accept and connect.
*
* Will also be called if an error happens while connecting, in
* which case the connection will be closed.
*/
public static interface ConnectedCallback {
public void handleConnected(IOChannel ch) throws IOException;
}
public static interface DataFlushedCallback {
public void handleFlushed(IOChannel ch) throws IOException;
}
protected Timer timer;
public Timer getTimer() {
return timer;
}
/**
* If the connector is layered on top of a different connector,
* return the lower layer ( for example the socket connector)
*/
public IOConnector getNet() {
return null;
}
public abstract void acceptor(IOConnector.ConnectedCallback sc,
CharSequence port, Object extra)
throws IOException;
// TODO: failures ?
// TODO: use String target or url
public abstract void connect(String host, int port,
IOConnector.ConnectedCallback sc) throws IOException;
public void stop() {
if (timer != null) {
timer.cancel();
}
}
}