Hi,

a quick mail about operations, as we talked about some aspect of it with Ludovic a couple of time, and we need to have some track of those discussions.

So we agreed that each operation should be synchronous *and* asynchronous. Having async operation is of major importance for operation that one user wants to abandon. Something like :

Future responseFuture = connection.search( blah );
int i = 0;

while ( responseFuture.hasMore() )
{
  Response response = responseFuture.get();
  i++;
  ...

  if ( i > 10 )
  {
    // Ok, enough
    responseFuture.abandon();
    break;
  }
}

is easier to use than having to declare a new thread to abandon a request.

There are some huge differences between OpenDS, UID and ADS in this area :
- ODS has two LdapConnection objects : one for sync operations, one for async operations. - UID has two methods for each operation. For instance bind() and asyncBind() - ADS has a bit more complicated system which implise that a listener to be injected in the method to make it async : bind( bindReques, listener) => async. bind( bindRequest ) => sync.

I think that UID approach is the most user friendly. Most of the case, users will use the sync methods. I don't like having 2 LdapConnection object, as it forbids the user to switch from sync to async. The ADS approach, based on listener, is way too complex.

thoughts ?

--
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com


Reply via email to