|   | 
Client-Server Interaction | 
 
| 
 | 
 
 
Subject: Client-Server Interaction
Author: SteveHB
 In response to: Response Control 
Posted on: 04/07/2009 09:33:52 PM
  
Server Side: 78564 entries
  Client Side: a view screen of 20 entries
 
  [Action #1: client wants to show the beginning of the list
 
  
Client:                            Server:            
          _offset: 1
    _contentCount: 0      --> 
     _beforeCount: 0
      _afterCount: 19
                                      
                          <==         _contentCount: 78564
                                    _targetPosition: 1
                                 (with 20 entries returned)
Action #2: client drags the scroll bar down to the bottom of the list
Client:                            Server:            
          _offset: 78564
    _contentCount: 78564  --> 
     _beforeCount: 19
      _afterCount: 0
                                      
                          <==         _contentCount: 78564
                                    _targetPosition: 78564
                                 (with 20 entries returned)
Action #3: client presses a page up key
Client:                            Server:            
          _offset: 78564-19-20
    _contentCount: 78564  --> 
     _beforeCount: 0
      _afterCount: 19
                                      
                          <==         _contentCount: 78564
                                    _targetPosition: 78525
                                 (with 20 entries returned)
[ Action #4: client drags the scroll bar slider 68% of list
Client:                            Server:            
          _offset: 53424
    _contentCount: 78564  --> 
     _beforeCount: 9
      _afterCount: 10
                                      
                          <==         _contentCount: 78564
                                    _targetPosition: 53424
                                 (with 20 entries returned)
Action #5: client types XYZ to browse the list starting from XYZ 
Client:                            Server:            
greaterThanOrEqual: XYZ  
      _beforeCount: 0     -->
       _afterCount: 19
                                      
                          <==         _contentCount: 78564
                                    _targetPosition: 77777
                                 (with 20 entries returned)
 
>  
> On 03/04/2009 08:02:28 PM  SteveHB wrote:
  
     If the request control is serviced, this response control is included in the SearchResultDone message as part of the controls field of the LDAPMessage.      The controlType is set to "2.16.840.1.113730.3.4.10". The controlValue, an OCTET STRING, is the BER-encoding of the following SEQUENCE: 
     
   VirtualListViewResponse ::= SEQUENCE { 
          targetPosition    INTEGER (0 .. maxInt), 
          contentCount     INTEGER (0 .. maxInt), 
          virtualListViewResult ENUMERATED { 
               success (0), 
               operationsError (1), 
               protocolError (3), 
               unwillingToPerform (53), 
               insufficientAccessRights (50), 
               timeLimitExceeded (3), 
               adminLimitExceeded (11), 
               innapropriateMatching (18), 
               sortControlMissing (60), 
               offsetRangeError (61), 
               other(80), 
               ... }, 
          contextID     OCTET STRING OPTIONAL } 
    
  targetPosition gives the list offset for the target entry.        contentCount gives the server's estimate of the current number of     entries in the list. Together these give sufficient information for     the client to update a list box slider position to match the newly     retrieved entries and identify the target entry. The contentCount     value returned SHOULD be used in a subsequent VirtualListViewRequest     control.        contextID is a server-defined octet string. If present, the contents     of the contextID field SHOULD be returned to the server by a client     in a subsequent virtual list request. The presence of a contextID     here indicates that the server is willing to return contiguous data     from a subsequent search request which uses the same search criteria,     accompanied by a VirtualListViewRequest which indicates that the     client wishes to receive an adjoining page of data.       The virtualListViewResult codes which are common to the LDAP     searchResultDone (adminLimitExceeded, timeLimitExceeded,     operationsError, unwillingToPerform, insufficientAccessRights,     success, other) have the same meanings as defined in [LDAPPROT], but     they pertain specifically to the VLV operation. For example, the     server could exceed a VLV-specific administrative limit while     processing a SearchRequest with a VirtualListViewRequest control.     Obviously, the same administrative limit would not be exceeded should     the same SearchRequest be submitted by the client without the     VirtualListViewRequest control. In this case, the client can     determine that the administrative limit has been exceeded in     servicing the VLV request, and can if it chooses resubmit the     SearchRequest without the VirtualListViewRequest control, or with     different parameters.       insufficientAccessRights means that the server denied the client     permission to perform the VLV operation.       If the server determines that the results of the search presented     exceed the range specified in INTEGER values, or if the client     specifies an invalid offset or contentCount, the server MUST set the     virtualListViewResult value to offsetRangeError.      
  
 
References:
  | 
  | 
 
  |   
 |