[
https://issues.apache.org/jira/browse/DIRMINA-375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534623
]
Brad Harvey commented on DIRMINA-375:
-------------------------------------
Sorry for delayed response. I have been *extremely* busy sipping cocktails and
generally lazing about on my honeymoon :) Alas, all good things must come to
an end!
Certainly integrating into IoSession is a great idea - I didn't consider this
in my implementation as I wanted something purely additive. This opens up the
possibility of having an IO Handler as well as blocking reads - you will need
to define when/if the IoHandler callback is called if there is also a
ReadFuture from IoSession.read().
I would urge some caution in providing an API with slight differences in
returning null vs throwing exception as suggested above:
* Object m = session.read().await(10000).getMessage(); // Returns null unless
received within 10 sec.
* Object m = session.read(10000).await().getMessage(); // Throws exception
unless received within 10 sec.
These two statements are very similar but have a very subtle difference that is
not intuitive and likely to be a source of confusion (especially if the latter
throws unchecked exceptions).
I suspect that the needs of most people looking for a synchronous API (who are
probably new to MINA) would be met best by hiding/short circuiting the
ReadFuture, eg:
* Object m = session.getMessage(); // or readMessage() or whatever, waits
forever for message
* Object m = session.getMessage(10000); // Throws timeout exception unless
received within 10 sec.
This would certainly make for an easier tutorial :) Advanced users may like to
use session.read(10000) since the ReadFuture returned offers a bit more
flexibility and power.
Cheers,
Brad.
> Synchronous Client API
> ----------------------
>
> Key: DIRMINA-375
> URL: https://issues.apache.org/jira/browse/DIRMINA-375
> Project: MINA
> Issue Type: New Feature
> Reporter: Brad Harvey
> Fix For: 2.0.0-M1
>
> Attachments: EchoClient.java, minaClient.patch, SumUpClient.java
>
>
> Hi,
> There was mention of a synchronous client api for MINA on the mailing list,
> so I thought I'd offer my implementation.
> http://www.nabble.com/forum/ViewPost.jtp?post=10445399&framed=y
> As far as I can tell it works, but I've never given it a good run under heavy
> load. The areas I think could use some review are:
> Connection - possible to use generics? Only makes sense if you can tie it to
> what the filters are doing I think.
> ConnectionFactoryImpl - is the managedSessions processing required?
> SequentialExecutor/DaemonThreadFactory - are there better/pre existing ways
> of doing these?
> Connection/NonBlockingConnection - any point having them separate? Did this
> initially for JCA resource adapter idea - didn't want to offer non blocking
> to EJB clients.
> Regards,
> Brad.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.