You are viewing a plain text version of this content. The canonical link for it is here.
Posted to api@directory.apache.org by Emmanuel Lecharny <el...@gmail.com> on 2010/02/06 17:02:36 UTC
Ldap Operations
Hi !
Time to discuss about Ldap operations.
We have two kind of messages, Requests and Responses. They both are
LdapMessages. Let's start with Requests
Requests :
----------
The list of existing Requests is :
Abandon
Add
Bind
Compare
Delete
Extended
Modify
ModifyDn
Search
Unbind
Some of them can be abandoned, two can't (Abandon, and Unbind)
Abandonable requests :
Add
Bind
Compare
Delete
Extended
Modify
ModifyDn
Search
Responses :
-----------
Before IntermediateResponse was introduced in RFC 4511, we were able to
distinguish between three kind of requests accordingly to their
associated responses :
- Requests with no expected responses : Unbind, Abandon
- Requests with a single expected response : Add, Bind, Compare, Delete,
Extended, Modify, ModifyDN
- Requests with a multiple expected response : Search.
Since RFC 4511 introduced the Intermediate response, things have
changed. Any request expecting a response may have a multiple response,
assuming that it has been sent with a control which semantic implies
that we may receive zero to many intermediate responses.
We cannot then distinguish requests in more than two kinds : those with
no response, and those with multiple responses.
Hierarchy :
----------
In order to reflect this, we can define a pretty simple hierarchy of
<interfaces> ad [classes] :
<LdapMessage>
^
|
+-- <Request>
| ^
| |
| +-- <RequestWithResponse>
| +-- <RequestWithoutResponse>
|
+-- <Response>
^
|
+-- <SearchResponse>
<Abandonable>
<RequestWithResponse> <--+
\
+-- [AddRequest], [BindRequest],
[CompareRequest], [DeleteRequest], [ExtendedRequest],
/ [ModifyRequest], [ModifyDnRequest],
[SearchRequest]
<Abandonable> <----------+
<RequestWithoutResponse> <-- [AbandonRequest], [UnbindRequest]
<Response> <-- [AddResponse], [BindResponse], [CompareResponse],
[DeleteResponse], [ExtendedResponse],
[ModifyResponse], [ModifyDnResponse], [IntermediateResponse]
<SearchResponse> <-- [SearchResultEntry], [SearchResultReference],
[SearchResultDone]
Thoughts ?
--
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com