Hi,

last thursaday 3 13th I submitted a patch for an extended version of commons net's 
TelnetClient containing new functionalities.

The support for an external option handler was through the TelnetOptionHAndler 
interface. The same object was used to handle all the options, with the result of a 
somehow reduced reusability of the option handlers.

To improve reusability and cleanness of the interface I worked out a second patch in 
which the support for external option handlers is implemented in a different way:

- An abstract base class for option handlers has been defined.
- The user builds the actual option handler class for each option by extending the 
base class. the option hadler class takes care of whether to activate the option or 
not (local and remote side) and manages the subnegotiation
- for each option the user registers a different option handler to TelnetClient

This new patch is an alternative to the patch I sent on 3 13th, in that it doesn't 
provide new functionality, rather the same functionality is offered through a 
different API.
I suggest that you take a look at both alternatives, even if I think that this new 
alternative goes a bit beyond in providing a reusable way of dealing with option 
handling.

This new patch also includes a correction to the option handling mechanism (a flush() 
of the output stream has been added after sending option negotiation sequences, to 
ensure that negotiation occurs ASAP).

A brief description of the new patch:
- TelnetOptionHandler is an abstract base class for option handling. User extends this 
class specifying how to do subnegotiation for each of the options he wants to support.
- EchoOptionHandler, TerminalTypeOptionHandler, SuppressGAOptionHandler, 
SimpleOptionHandler are a library of already provided option handlers. 
SimpleOptionHandler allows managing all options that don't require subnegotiation.
- TelnetInputStream has been modifies to handle option subnegotiation and AYT response 
checking.
- Telnet has been modified by adding new constructors, for handling TERMINAL-TYPE and 
for driving the control of option negotiation through the user provided 
TelnetOptionHandler instances. Also, methods for adding/removing the 
TelnetOptionHandler instances have been added.
- TelnetClient has been modified by adding new constructors and interface methods.
- TelnetClientExample1 is an example terminal that uses external TelnetOptionHandler 
instances  and demonstrates use of sendAYT(), getLocalOptionState(), 
getRemoteOptionState(), SimpleOptionHandler, addOptionHAndler(), 
removeOptionHandler(). 
- TelnetClientExample2 is the same example terminal without use of the external option 
handler but using the built in TERMINAL-TYPE support.

I know that I'm providing too much patches for the same functionality and this can be 
confusing. Sorry for that!
Again, I think that the best is evaluating the last two patches (I prefer the second 
one).

Any comment or suggestion will be welcome.

Bruno

Attachment: commons-net-openoption-patch2.ZIP
Description: Zip compressed data

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to