\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. sept. 25 18:27:20 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc2891},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Extension de contrôle pour le trie des résultats de recherche coté serveur},
CreationDate={D:20130925182720},
ModDate={D:20130925182720},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge rfc2891 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Extension de contrôle pour le trie des résultats de recherche coté serveur}
 
\vspace{10mm}
 
\hspace{1mm}  Ces contrôles permettent à un client de spécifier les attributs et règles de correspondance qu'un serveur devrait utiliser pour retourner les résultats. Ces contrôles peuvent être utiles quand un client a des fonctionnalités limitées ou ne peuvent pas trier les résultats, mais nécessite que le résultat soit trié. Les contrôles de trie permettent de retourner un code de résultat pour le trie qui est indépendant du code de résultat retourné.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Requête }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} controleType]{vaut "1.2.840.113556.1.4.473"}
\item[\hspace{1mm} controlValue]{vaut:}
\end{description}
 
{\ttfamily
SortKeyList ::= SEQUENCE OF SEQUENCE\\ \{ attributeType AttributeDescription,\\ \hspace{2mm}orderingRule \texttt{[}0\texttt{]} MatchingRuleId OPTIONAL,\\ \hspace{2mm}reverseOrder \texttt{[}1\texttt{]} BOOLEAN DEFAULT FALSE \}\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} SortListKey]{est une séquence ordonnée pour le trie.}
\item[\hspace{1mm} MatchingRuleId]{devrait être un valide pour le type d'attribut auquel il s'applique.}
\end{description}
 
\vspace{1cm}{\huge Réponse }
 
\
 
\hspace{1mm} Ce contrôle est inclus dans le message searchResultDone.
 
{\ttfamily
SortResult ::= SEQUENCE \{\\ \hspace{2mm}sortResult ENUMERATED \{\\ \hspace{2mm}success (0), — results are sorted\\ \hspace{2mm}operationsError (1), — server internal failure\\ \hspace{2mm}timeLimitExceeded (3), — timelimit reached before sorting was completed\\ \hspace{2mm}strongAuthRequired (8), — refused to return sorted results via insecure protocol\\ \hspace{2mm}adminLimitExceeded (11), — too many matching entries for the server to sort\\ \hspace{2mm}noSuchAttribute (16), — unrecognized attribute type in sort key\\ \hspace{2mm}inappropriateMatching (18), — unrecognized or inappropriate matching rule in sort key\\ \hspace{2mm}insufficientAccessRights (50), — refused to return sorted results to this client\\ \hspace{2mm}busy (51), — too busy to process\\ \hspace{2mm}unwillingToPerform (53), — unable to sort\\ \hspace{2mm}other (80)\\ \},\\ attributeType \texttt{[}0\texttt{]} AttributeDescription OPTIONAL \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Intéraction Client-Serveur }
 
\
 
\hspace{1mm}  \textbf{sortKeyRequestControl} spécifie un ou plusieurs types d'attributs et de règles de correspondance pour les résultats retournés par une recherche.
\vspace{5mm} \\
\hspace{1mm}  Le serveur devrait retourner tous les résultats dans l'ordre spécifié. Si \textbf{reverseOrder} est à TRUE le résultat sera inversé.
\vspace{5mm} \\
\hspace{1mm}  Il y'a 6 scénarios possibles qui peuvent se produire en résultat au contrôle de trie inclue dans la requête:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1-]{Si le serveur ne supporte pas ce contrôle et que le client met le champs \textbf{criticality}, le serveur doit retourner \textbf{unavailableCriticalExtension}.}
\item[\hspace{1mm} 2-]{Si le serveur ne supporte par ce contrôle et que \textbf{criticality} est FALSE, le serveur doit ignorer le contrôle et traiter la requête.}
\item[\hspace{1mm} 3-]{Si le serveur supporte ce contrôle mais ne peut pas trier le résultat avec les clés spécifiées et que le champs \textbf{criticality} est mis, le serveur devrait retourner \textbf{unavailableCriticalExtension}}
\item[\hspace{1mm} 4-]{Si le serveur supporte ce contrôle mais ne peut pas trier le résultat avec les clés spécifiées et que le champs \textbf{criticality} est FALSE, le serveur devrait retourner tous les résultats non triés. et inclure \textbf{sortKeyResponseControl} dans \textbf{searchResultDone}.}
\item[\hspace{1mm} 5-]{Si le serveur supporte ce contrôle et peut trier le résultat en utilisant les clés spécifiées, il devrait inclure le \textbf{sortKeyResponseControl} dans \textbf{searchResultDone} avec \textbf{sortResult} à \textbf{success}.}
\item[\hspace{1mm} 6-]{Si la recherche échoue ou qu'il n'y a pas de résultat le serveur devrait omettre le \textbf{sortKeyResponseControl} du \textbf{searchResultDone}.}
\end{description}
 
\hspace{1mm}  Le client est assuré que le résultat est trié uniquement si le code de résultat dans \textbf{sortKeyResponseControl} est à \textbf{success}.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si un client demande un trie à un serveur qui chaîne la requête et récupère des entrées depuis plusieurs serveurs, et que \textbf{criticality} est positionné, le serveur doit fusionner le résultat avant de les retourner au client ou doit retourner \textbf{unwillingToPerform}
\vspace{5mm} \\
 
 
\hspace{1mm}  Quand \textbf{sortKeyRequestControl} est utilisé avec \textbf{pagedResultsControl} , le serveur devrait envoyer les messages \textbf{searchResultEntry} triés avec les clés appliqués au résultat total, et non sur les pages. \textbf{sortKeyList} doit être présent sur chaque message \textbf{searchRequest} pour le résultat paginé. Il ne doit pas changer entre les \textbf{searchRequests} pour le même résultat.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
