On 16/12/03 11:40 pm, Graham Barr <[EMAIL PROTECTED]> wrote:

> 
> On 16 Dec 2003, at 19:42, Chris Ridd wrote:
> 
>> On 16/12/03 7:25 pm, Graham Barr <[EMAIL PROTECTED]> wrote:
>>> It came up recently. My suggestion is that the user should be able to
>>> register a callback with Net::LDAP that Net::LDAP will call when it
>>> needs a connection to a different server. It would pass the URL
>>> details
>>> from the referral and expect a Net::LDAP object back, which it would
>>> then send the request to.
>> 
>> What problem does that solve though? The calling script still has to
>> manage
>> connections (reusing where possible), still has to figure out how to
>> connect
>> and bind, still has to check for referral loops, and still has to
>> figure out
>> when to close any opened connections.
> 
> Yes, but it moves the need to check for that situation in the result
> from every call.

That's true.

> net::LDAP is never going to create connections for you, as it can never
> know 100% how to. It can know when it needs a connection, but it should
> be p to the application code to create it when needed.
> 
>> Checking for referral loops could be done before calling your
>> callback, but
>> the rest of it still seems as "messy" as the existing API.
> 
> No, because lots of stuff is hidden. Consider what you have todo today
> 
>  $mesg = $ldap->delete(@args);
>  handle_referal($mesg) if (... check for referral ..);
> 
>  vs
> 
>  $ldap = Net::LDAP-.new(..., referral_connect => \&my_connect)
> 
>  $mesg= $ldap->delete(@args);
> 
> Where referrals are done behind the scenes using &my_connect to create
> the connection

That doesn't help all that much, because the guts of handle_referal (sic)
are similar to my_connect. You're just moving code around a bit.

I'll try and think of some improvements a bit later instead of being
negative ;-)

Cheers,

Chris

Reply via email to