functions for implementing mutexes on top of LDAP's built in test and set mechanism. In order to use this module you must load mutex.schema, which is an rfc2252 format schema file. raised when a mutex operation fails. The string argument contains the name of the method which failed, and the exception contains details about what failed.
class type mutex_t = object ... end
the class type of a single mutex, used for performing advisory locking of some action
class type object_lock_table_t = object ... end
the class type of an object lock table which allows for advisory locking of objects by dn
class mutex : string list -> string -> string -> string -> object ... end
new mutex ldapurls binddn bindpw mutexdn
val apply_with_mutex : mutex -> (unit -> 'a) -> 'a
used to apply some function, first locking the mutex, unlocking it only after the function has been applied. If the function generates any exception, this wrapper catches that exception, and unlocks the mutex before reraising the exception. Generally garentees that the mutex will always be used consistantly when performing an action.
class object_lock_table : string list -> string -> string -> string -> object ... end
new object_lock_table ldapurls binddn bindpw mutexdn