Ohhh, did you find a way to resolve
https://issues.apache.org/jira/browse/DIRMINA-375
? That's exciting! I'd love to see it in the sandbox.
Cheers,
Trustin
On 10/25/07, Niklas Therning <[EMAIL PROTECTED]> wrote:
> Hi guys,
>
> I've played around with combining commons-javaflow (continuations for
> Java) and MINA. The result is that I can do session.read() and wait for
> a new message without blocking the current thread. session.read() uses
> javaflow to suspend the current thread and save the call stack. Then
> when a new message arrives my code will be resumed right after the call
> to session.read(). session.write() and session.close() both work similarly.
>
> Here's a simple example I've been working on:
>
> public class Main {
>
> public static void main(String[] args) {
>
> BasicConfigurator.configure();
>
> final NioSocketConnector connector = new NioSocketConnector();
> connector.getFilterChain().addLast("pcf", new ProtocolCodecFilter(
> new TextLineCodecFactory(
> Charset.forName("ISO8859-1"),
> LineDelimiter.WINDOWS,
> LineDelimiter.WINDOWS)));
> connector.getFilterChain().addLast("log", new LoggingFilter());
> connector.setHandler(new ContinuationIoHandler(new
> ContinuableIoHandler() {
>
> @Continuable
> public void run(ContinuableIoSession session) {
> try {
> System.out.println(session.read());
> session.write("USER user");
> System.out.println(session.read());
> session.write("PASS qwerty");
> System.out.println(session.read());
> session.write("STAT");
> System.out.println(session.read());
> session.write("QUIT");
> System.out.println(session.read());
> session.close();
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
>
> public void sessionCreated(IoSession session) {
> }
>
> }));
> connector.connect(new InetSocketAddress("pop.example.com", 110));
> }
> }
>
> This code will log in to a POP3 server and query it for the number of
> messages and then log out. The nice thing about this is that you get the
> best of two worlds: simple and readable code (blocking style) yet the
> scalability of non-blocking IO.
>
> If you find this interesting I'd be more than happy to put the code in
> my sandbox for you to play with. Please be aware that I've extended
> commons-javaflow slightly to be able to use Java5 instrumentation to do
> the byte-code modification. I've also added the @Continuable annotation
> which marks classes and methods which should be byte-code enhanced.
>
> --
> Niklas Therning
> www.spamdrain.net
>
>
--
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6