[ 
http://issues.apache.org/jira/browse/DIRMINA-120?page=comments#action_12357484 
] 

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....

WDYT?

> Callbacks for IoFutures
> -----------------------
>
>          Key: DIRMINA-120
>          URL: http://issues.apache.org/jira/browse/DIRMINA-120
>      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:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to