|
From: <mi...@st...> - 2002-06-30 17:09:55
|
Steffen Ries wrote: > >>I have to admit that I'm scared about adding such functionality into >>the C part of python-ldap. I'd like to encourage you to find a >>Python-only solution which is easier to maintain. BTW: That's exactly >>one of the benefits of class ldap.ldapobject.LDAPObject: It can be >>sub-classed for extending its functionality. > > Hmm. Implementing a Python-only solution would require to catch the > ldap.REFERRAL (or ldap.PARTIAL_RESULT) for each of the operations, > decide how to chase the referral and then retry the operation. I can > try to come up with a proposal... > [..] >>I'd rather like to see a framework which helps the application >>developer to implement generic exception handlers for >>e.g. ldap.SERVER_DOWN or ldap.REFERRAL and decide what to do in >>his/her specific environment. > > Are you thinking of registering error specific exception handlers or > pushing the functionality to the application? LDAPObject._ldap_call could be the point from where registered exception handlers are called. E.g. a new method LDAPObject.ErrorHandler(e,func,args,kwargs) could check whether a generic handler method is registered for a specific LDAPError class and call that handler with these parameters. Now the application would sub-class LDAPObject and implement such handlers applying the specific knowledge about the environment. Note that we have the advantage of having OO-oriented API and exceptions. Therefore we aren't limited to such crude mechanisms common in C like call-back functions. IMHO we should think in this direction. > I would like to add some functionality to the library (call it a > framework), rather than burden the application to wrap every > search/add/modify with an exception handler for chasing referrals. I > have this kind of code in some places for fail over, which makes it > pretty hard to maintain. Well, I'd like to have something in the python-ldap library too. But although it sounds pretty easy I guess it's not. There are some caveats I'm sure (e.g. some kind of nested error handling in exception handlers...). Ciao, Michael. |