directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "dave irving (JIRA)" <>
Subject [jira] Commented: (DIRMINA-120) Callbacks for IoFutures
Date Sat, 12 Nov 2005 10:33:04 GMT
    [ ] 

dave irving commented on DIRMINA-120:

What I thought was something like this:

1) Add a "Callback" interface to IoFuture, and a "setCallback" method. This allows the result
of any IoFuture to be obtained "callback style" (So I can do my write callbacks... yeah!!).

2) Add a "ConnectListener" interface to ConnectFuture. This is more specific, and has the
methods you mention above. Add a "setConnectListener" method to ConnectFuture.

3) Internally, a private adapter class adapts ConnectListeners to Callbacks. So when you do
a setConnectListener, it creates a CallbackAdapter and sets it as the futures callback.

This means that ConnectFuture can still have a more specific callback interface (succeeded
/ failed), but we can still get callbacks for any other type of future.

I'm going to attach the two associated files now....


> Callbacks for IoFutures
> -----------------------
>          Key: DIRMINA-120
>          URL:
>      Project: Directory MINA
>         Type: Improvement
>     Reporter: Trustin Lee
>     Assignee: Trustin Lee
>      Fix For: 0.9

> IoFuture provides only blocking-way ('join' method) for user to find out the result of
an I/O request.  It would be great if users can specify a callback:
> ConnectFuture future = connector.connect(...);
> future.setCallback( new ConnectFuture.Callback() {
>     public void connectionEstablished( IoSession session ) {
>     }
>     public void connectionFailed( Throwable cause ) {
>     }
> } );
> There can be a race condition if the connection process ends before a user calls setCallback()
method, but we can resolve this carefully so users don't notice any issue.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message