Niklas Therning wrote:
Julien Vermillard skrev:
On Mon, 16 Jun 2008 22:54:58 +0200
Emmanuel Lecharny <[EMAIL PROTECTED]> wrote:
Hi gang,
I have recently reviewed some part of the IoSession inheritence
tree, and discovered that some interfaces are just useless :
- SocketSession
- DatagramSession
I suggest we remove them (it won't harm the project or the tests in
any case).
Anyone see a reason to keep those useless and undocumented
interfaces ?
Thanks !
I found a side effect :
SocketConnector connector = new NioSocketConnector();
connector.setHandler(handler);
connector.setConnectTimeoutMillis(2000);
connector.getSessionConfig().setReaderIdleTime(10);
connector.getSessionConfig().setWriterIdleTime(10);
In place of writing :
connector.getSessionConfig().setTcpNoDelay(true);
You need to cast like that :
((SocketSessionConfig)connector.getSessionConfig()).setTcpNoDelay(true);
Julien
I think this is exactly why these interfaces were introduced, to be
able to use Java5 covarient return types. I wouldn't say they are
useless because they obviously save you from doing casts like this.
IMHO, introducing an interface for the sole purpose of avoiding a cast
is a little bit overkilling. Would it be more than one cast, I would
agree, but otherwise, I think we have other options, like declaring the
constructed element as in instance of the class, and not as an
"instance" of the interface. Something like :
// Connector is not declared as a Socketonnector
NioSocketConnector connector = new NioSocketConnector();
blah ...
connector.getSessionConfig().setTcpNoDelay(true);
work just fine _and_ does not need to have an interface to be defined.
wdyt ?
--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org