ldap-client/Ldap-Client-Internal.html
2015-04-11 16:32:41 +00:00

15 lines
33 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ldap.Client.Internal</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Ldap-Client-Internal.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Ldap-Client-Internal.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ldap-client-0.1.0: Pure Haskell LDAP Client Library</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Ldap.Client.Internal</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Waiting for Request Completion</a></li><li><a href="#g:2">Misc</a></li><li><a href="#g:3">Unbind operation</a></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Host">Host</a><ul class="subs"><li>= <a href="#v:Plain">Plain</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></li><li>| <a href="#v:Insecure">Insecure</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></li><li>| <a href="#v:Secure">Secure</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:PortNumber">PortNumber</a> :: *</li><li class="src short"><span class="keyword">data</span> <a href="#t:Ldap">Ldap</a> = <a href="#v:Ldap">Ldap</a> {<ul class="subs"><li><a href="#v:client">client</a> :: <a href="http://hackage.haskell.org/package/stm/docs/Control-Concurrent-STM-TQueue.html#t:TQueue">TQueue</a> <a href="Ldap-Client-Internal.html#t:ClientMessage">ClientMessage</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:ClientMessage">ClientMessage</a> = <a href="#v:New">New</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> (<a href="http://hackage.haskell.org/package/stm/docs/Control-Concurrent-STM-TMVar.html#t:TMVar">TMVar</a> (<a href="Ldap-Client.html#t:NonEmpty">NonEmpty</a> <a href="Ldap-Asn1-Type.html#t:ProtocolServerOp">ProtocolServerOp</a>))</li><li class="src short"><span class="keyword">data</span> <a href="#t:ResultCode">ResultCode</a><ul class="subs"><li>= <a href="#v:Success">Success</a></li><li>| <a href="#v:OperationError">OperationError</a></li><li>| <a href="#v:ProtocolError">ProtocolError</a></li><li>| <a href="#v:TimeLimitExceeded">TimeLimitExceeded</a></li><li>| <a href="#v:SizeLimitExceeded">SizeLimitExceeded</a></li><li>| <a href="#v:CompareFalse">CompareFalse</a></li><li>| <a href="#v:CompareTrue">CompareTrue</a></li><li>| <a href="#v:AuthMethodNotSupported">AuthMethodNotSupported</a></li><li>| <a href="#v:StrongerAuthRequired">StrongerAuthRequired</a></li><li>| <a href="#v:Referral">Referral</a></li><li>| <a href="#v:AdminLimitExceeded">AdminLimitExceeded</a></li><li>| <a href="#v:UnavailableCriticalExtension">UnavailableCriticalExtension</a></li><li>| <a href="#v:ConfidentialityRequired">ConfidentialityRequired</a></li><li>| <a href="#v:SaslBindInProgress">SaslBindInProgress</a></li><li>| <a href="#v:NoSuchAttribute">NoSuchAttribute</a></li><li>| <a href="#v:UndefinedAttributeType">UndefinedAttributeType</a></li><li>| <a href="#v:InappropriateMatching">InappropriateMatching</a></li><li>| <a href="#v:ConstraintViolation">ConstraintViolation</a></li><li>| <a href="#v:AttributeOrValueExists">AttributeOrValueExists</a></li><li>| <a href="#v:InvalidAttributeSyntax">InvalidAttributeSyntax</a></li><li>| <a href="#v:NoSuchObject">NoSuchObject</a></li><li>| <a href="#v:AliasProblem">AliasProblem</a></li><li>| <a href="#v:InvalidDNSyntax">InvalidDNSyntax</a></li><li>| <a href="#v:AliasDereferencingProblem">AliasDereferencingProblem</a></li><li>| <a href="#v:InappropriateAuthentication">InappropriateAuthentication</a></li><li>| <a href="#v:InvalidCredentials">InvalidCredentials</a></li><li>| <a href="#v:InsufficientAccessRights">InsufficientAccessRights</a></li><li>| <a href="#v:Busy">Busy</a></li><li>| <a href="#v:Unavailable">Unavailable</a></li><li>| <a href="#v:UnwillingToPerform">UnwillingToPerform</a></li><li>| <a href="#v:LoopDetect">LoopDetect</a></li><li>| <a href="#v:NamingViolation">NamingViolation</a></li><li>| <a href="#v:ObjectClassViolation">ObjectClassViolation</a></li><li>| <a href="#v:NotAllowedOnNonLeaf">NotAllowedOnNonLeaf</a></li><li>| <a href="#v:NotAllowedOnRDN">NotAllowedOnRDN</a></li><li>| <a href="#v:EntryAlreadyExists">EntryAlreadyExists</a></li><li>| <a href="#v:ObjectClassModsProhibited">ObjectClassModsProhibited</a></li><li>| <a href="#v:AffectsMultipleDSAs">AffectsMultipleDSAs</a></li><li>| <a href="#v:Other">Other</a></li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Async">Async</a> a</li><li class="src short"><span class="keyword">type</span> <a href="#t:AttrList">AttrList</a> f = [(<a href="Ldap-Client-Internal.html#t:Attr">Attr</a>, f <a href="Ldap-Client-Internal.html#t:AttrValue">AttrValue</a>)]</li><li class="src short"><a href="#v:wait">wait</a> :: <a href="Ldap-Client-Internal.html#t:Async">Async</a> a -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> (<a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a)</li><li class="src short"><a href="#v:waitSTM">waitSTM</a> :: <a href="Ldap-Client-Internal.html#t:Async">Async</a> a -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> (<a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a)</li><li class="src short"><span class="keyword">type</span> <a href="#t:Response">Response</a> = <a href="Ldap-Client.html#t:NonEmpty">NonEmpty</a> InMessage</li><li class="src short"><span class="keyword">data</span> <a href="#t:ResponseError">ResponseError</a><ul class="subs"><li>= <a href="#v:ResponseInvalid">ResponseInvalid</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> <a href="Ldap-Client-Internal.html#t:Response">Response</a></li><li>| <a href="#v:ResponseErrorCode">ResponseErrorCode</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> <a href="Ldap-Client-Internal.html#t:ResultCode">ResultCode</a> <a href="Ldap-Client-Internal.html#t:Dn">Dn</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:Request">Request</a> = <a href="Ldap-Asn1-Type.html#t:ProtocolClientOp">ProtocolClientOp</a></li><li class="src short"><a href="#v:raise">raise</a> :: <a href="http://hackage.haskell.org/package/base/docs/Control-Exception-Base.html#t:Exception">Exception</a> e =&gt; <a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> e a -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:sendRequest">sendRequest</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; (<a href="Ldap-Client-Internal.html#t:Response">Response</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a) -&gt; <a href="Ldap-Client-Internal.html#t:Request">Request</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> (<a href="Ldap-Client-Internal.html#t:Async">Async</a> a)</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Dn">Dn</a> = <a href="#v:Dn">Dn</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Attr">Attr</a> = <a href="#v:Attr">Attr</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:AttrValue">AttrValue</a> = <a href="http://hackage.haskell.org/package/bytestring/docs/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:unAttr">unAttr</a> :: <a href="Ldap-Client-Internal.html#t:Attr">Attr</a> -&gt; <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></li><li class="src short"><a href="#v:unbindAsync">unbindAsync</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:unbindAsyncSTM">unbindAsyncSTM</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Host" class="def">Host</a> <a href="src/Ldap-Client-Internal.html#Host" class="link">Source</a></p><div class="doc"><p>LDAP host.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Plain" class="def">Plain</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></td><td class="doc"><p>Plain LDAP. Do not use!</p></td></tr><tr><td class="src"><a name="v:Insecure" class="def">Insecure</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></td><td class="doc"><p>LDAP over TLS without the certificate validity check.
Only use for testing!</p></td></tr><tr><td class="src"><a name="v:Secure" class="def">Secure</a> <a href="http://hackage.haskell.org/package/base/docs/Data-String.html#t:String">String</a></td><td class="doc"><p>LDAP over TLS. Use!</p></td></tr></table></div><div class="subs instances"><p id="control.i:Host" class="caption collapser" onclick="toggleSection('i:Host')">Instances</p><div id="section.i:Host" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:Host">Host</a> <a href="src/Ldap-Client-Internal.html#line-49" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Ord.html#t:Ord">Ord</a> <a href="Ldap-Client-Internal.html#t:Host">Host</a> <a href="src/Ldap-Client-Internal.html#line-49" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:Host">Host</a> <a href="src/Ldap-Client-Internal.html#line-49" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:PortNumber" class="def">PortNumber</a> :: *</p><div class="subs instances"><p id="control.i:PortNumber" class="caption collapser" onclick="toggleSection('i:PortNumber')">Instances</p><div id="section.i:PortNumber" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Prelude.html#t:Enum">Enum</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Prelude.html#t:Integral">Integral</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Prelude.html#t:Num">Num</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Ord.html#t:Ord">Ord</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Prelude.html#t:Real">Real</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Foreign-Storable.html#t:Storable">Storable</a> <a href="Ldap-Client-Internal.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Ldap" class="def">Ldap</a> <a href="src/Ldap-Client-Internal.html#Ldap" class="link">Source</a></p><div class="doc"><p>A token. All functions that interact with the Directory require one.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Ldap" class="def">Ldap</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:client" class="def">client</a> :: <a href="http://hackage.haskell.org/package/stm/docs/Control-Concurrent-STM-TQueue.html#t:TQueue">TQueue</a> <a href="Ldap-Client-Internal.html#t:ClientMessage">ClientMessage</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Ldap" class="caption collapser" onclick="toggleSection('i:Ldap')">Instances</p><div id="section.i:Ldap" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> <a href="src/Ldap-Client-Internal.html#line-54" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ClientMessage" class="def">ClientMessage</a> <a href="src/Ldap-Client-Internal.html#ClientMessage" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:New" class="def">New</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> (<a href="http://hackage.haskell.org/package/stm/docs/Control-Concurrent-STM-TMVar.html#t:TMVar">TMVar</a> (<a href="Ldap-Client.html#t:NonEmpty">NonEmpty</a> <a href="Ldap-Asn1-Type.html#t:ProtocolServerOp">ProtocolServerOp</a>))</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ResultCode" class="def">ResultCode</a> <a href="src/Ldap-Asn1-Type.html#ResultCode" class="link">Source</a></p><div class="doc"><p>LDAP operation's result.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Success" class="def">Success</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:OperationError" class="def">OperationError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ProtocolError" class="def">ProtocolError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:TimeLimitExceeded" class="def">TimeLimitExceeded</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SizeLimitExceeded" class="def">SizeLimitExceeded</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CompareFalse" class="def">CompareFalse</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CompareTrue" class="def">CompareTrue</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AuthMethodNotSupported" class="def">AuthMethodNotSupported</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:StrongerAuthRequired" class="def">StrongerAuthRequired</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Referral" class="def">Referral</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AdminLimitExceeded" class="def">AdminLimitExceeded</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:UnavailableCriticalExtension" class="def">UnavailableCriticalExtension</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ConfidentialityRequired" class="def">ConfidentialityRequired</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SaslBindInProgress" class="def">SaslBindInProgress</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NoSuchAttribute" class="def">NoSuchAttribute</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:UndefinedAttributeType" class="def">UndefinedAttributeType</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InappropriateMatching" class="def">InappropriateMatching</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ConstraintViolation" class="def">ConstraintViolation</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AttributeOrValueExists" class="def">AttributeOrValueExists</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InvalidAttributeSyntax" class="def">InvalidAttributeSyntax</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NoSuchObject" class="def">NoSuchObject</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AliasProblem" class="def">AliasProblem</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InvalidDNSyntax" class="def">InvalidDNSyntax</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AliasDereferencingProblem" class="def">AliasDereferencingProblem</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InappropriateAuthentication" class="def">InappropriateAuthentication</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InvalidCredentials" class="def">InvalidCredentials</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:InsufficientAccessRights" class="def">InsufficientAccessRights</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Busy" class="def">Busy</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Unavailable" class="def">Unavailable</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:UnwillingToPerform" class="def">UnwillingToPerform</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:LoopDetect" class="def">LoopDetect</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NamingViolation" class="def">NamingViolation</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ObjectClassViolation" class="def">ObjectClassViolation</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NotAllowedOnNonLeaf" class="def">NotAllowedOnNonLeaf</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NotAllowedOnRDN" class="def">NotAllowedOnRDN</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:EntryAlreadyExists" class="def">EntryAlreadyExists</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ObjectClassModsProhibited" class="def">ObjectClassModsProhibited</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:AffectsMultipleDSAs" class="def">AffectsMultipleDSAs</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Other" class="def">Other</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:ResultCode" class="caption collapser" onclick="toggleSection('i:ResultCode')">Instances</p><div id="section.i:ResultCode" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:ResultCode">ResultCode</a> <a href="src/Ldap-Asn1-Type.html#line-163" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:ResultCode">ResultCode</a> <a href="src/Ldap-Asn1-Type.html#line-163" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Async" class="def">Async</a> a <a href="src/Ldap-Client-Internal.html#Async" class="link">Source</a></p><div class="doc"><p>Asynchronous LDAP operation. Use <code><a href="Ldap-Client-Internal.html#v:wait">wait</a></code> or <code><a href="Ldap-Client-Internal.html#v:waitSTM">waitSTM</a></code> to wait for its completion.</p></div><div class="subs instances"><p id="control.i:Async" class="caption collapser" onclick="toggleSection('i:Async')">Instances</p><div id="section.i:Async" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Functor.html#t:Functor">Functor</a> <a href="Ldap-Client-Internal.html#t:Async">Async</a> <a href="src/Ldap-Client-Internal.html#line-64" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AttrList" class="def">AttrList</a> f = [(<a href="Ldap-Client-Internal.html#t:Attr">Attr</a>, f <a href="Ldap-Client-Internal.html#t:AttrValue">AttrValue</a>)] <a href="src/Ldap-Client-Internal.html#AttrList" class="link">Source</a></p><div class="doc"><p>List of attributes and their values. <code>f</code> is the structure these
values are in, e.g. <code><a href="Ldap-Client.html#t:NonEmpty">NonEmpty</a></code>.</p></div></div><h1 id="g:1">Waiting for Request Completion</h1><div class="top"><p class="src"><a name="v:wait" class="def">wait</a> :: <a href="Ldap-Client-Internal.html#t:Async">Async</a> a -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> (<a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a) <a href="src/Ldap-Client-Internal.html#wait" class="link">Source</a></p><div class="doc"><p>Wait for operation completion.</p></div></div><div class="top"><p class="src"><a name="v:waitSTM" class="def">waitSTM</a> :: <a href="Ldap-Client-Internal.html#t:Async">Async</a> a -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> (<a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a) <a href="src/Ldap-Client-Internal.html#waitSTM" class="link">Source</a></p><div class="doc"><p>Wait for operation completion inside <code><a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a></code>.</p><p>Do not use this inside the same <code><a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a></code> transaction the operation was
requested in! To give LDAP the chance to respond to it that transaction
should commit. After that, applying <code><a href="Ldap-Client-Internal.html#v:waitSTM">waitSTM</a></code> to the corresponding <code><a href="Ldap-Client-Internal.html#t:Async">Async</a></code>
starts to make sense.</p></div></div><h1 id="g:2">Misc</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Response" class="def">Response</a> = <a href="Ldap-Client.html#t:NonEmpty">NonEmpty</a> InMessage <a href="src/Ldap-Client-Internal.html#Response" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ResponseError" class="def">ResponseError</a> <a href="src/Ldap-Client-Internal.html#ResponseError" class="link">Source</a></p><div class="doc"><p>Response indicates a failed operation.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ResponseInvalid" class="def">ResponseInvalid</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> <a href="Ldap-Client-Internal.html#t:Response">Response</a></td><td class="doc"><p>LDAP server did not follow the protocol, so <code>ldap-client</code> couldn't make sense of the response.</p></td></tr><tr><td class="src"><a name="v:ResponseErrorCode" class="def">ResponseErrorCode</a> <a href="Ldap-Client-Internal.html#t:Request">Request</a> <a href="Ldap-Client-Internal.html#t:ResultCode">ResultCode</a> <a href="Ldap-Client-Internal.html#t:Dn">Dn</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></td><td class="doc"><p>The response contains a result code indicating failure and an error message.</p></td></tr></table></div><div class="subs instances"><p id="control.i:ResponseError" class="caption collapser" onclick="toggleSection('i:ResponseError')">Instances</p><div id="section.i:ResponseError" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> <a href="src/Ldap-Client-Internal.html#line-75" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> <a href="src/Ldap-Client-Internal.html#line-75" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Control-Exception-Base.html#t:Exception">Exception</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> <a href="src/Ldap-Client-Internal.html#line-77" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Request" class="def">Request</a> = <a href="Ldap-Asn1-Type.html#t:ProtocolClientOp">ProtocolClientOp</a> <a href="src/Ldap-Client-Internal.html#Request" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:raise" class="def">raise</a> :: <a href="http://hackage.haskell.org/package/base/docs/Control-Exception-Base.html#t:Exception">Exception</a> e =&gt; <a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> e a -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> a <a href="src/Ldap-Client-Internal.html#raise" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:sendRequest" class="def">sendRequest</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; (<a href="Ldap-Client-Internal.html#t:Response">Response</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/Data-Either.html#t:Either">Either</a> <a href="Ldap-Client-Internal.html#t:ResponseError">ResponseError</a> a) -&gt; <a href="Ldap-Client-Internal.html#t:Request">Request</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> (<a href="Ldap-Client-Internal.html#t:Async">Async</a> a) <a href="src/Ldap-Client-Internal.html#sendRequest" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Dn" class="def">Dn</a> <a href="src/Ldap-Client-Internal.html#Dn" class="link">Source</a></p><div class="doc"><p>Unique identifier of an LDAP entry.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Dn" class="def">Dn</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Dn" class="caption collapser" onclick="toggleSection('i:Dn')">Instances</p><div id="section.i:Dn" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:Dn">Dn</a> <a href="src/Ldap-Client-Internal.html#line-69" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:Dn">Dn</a> <a href="src/Ldap-Client-Internal.html#line-69" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Attr" class="def">Attr</a> <a href="src/Ldap-Client-Internal.html#Attr" class="link">Source</a></p><div class="doc"><p>Attribute name.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Attr" class="def">Attr</a> <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Attr" class="caption collapser" onclick="toggleSection('i:Attr')">Instances</p><div id="section.i:Attr" class="show"><table><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Data-Eq.html#t:Eq">Eq</a> <a href="Ldap-Client-Internal.html#t:Attr">Attr</a> <a href="src/Ldap-Client-Internal.html#line-81" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="http://hackage.haskell.org/package/base/docs/Text-Show.html#t:Show">Show</a> <a href="Ldap-Client-Internal.html#t:Attr">Attr</a> <a href="src/Ldap-Client-Internal.html#line-81" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AttrValue" class="def">AttrValue</a> = <a href="http://hackage.haskell.org/package/bytestring/docs/Data-ByteString.html#t:ByteString">ByteString</a> <a href="src/Ldap-Client-Internal.html#AttrValue" class="link">Source</a></p><div class="doc"><p>Attribute value.</p></div></div><div class="top"><p class="src"><a name="v:unAttr" class="def">unAttr</a> :: <a href="Ldap-Client-Internal.html#t:Attr">Attr</a> -&gt; <a href="http://hackage.haskell.org/package/text/docs/Data-Text.html#t:Text">Text</a> <a href="src/Ldap-Client-Internal.html#unAttr" class="link">Source</a></p></div><h1 id="g:3">Unbind operation</h1><div class="top"><p class="src"><a name="v:unbindAsync" class="def">unbindAsync</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/System-IO.html#t:IO">IO</a> () <a href="src/Ldap-Client-Internal.html#unbindAsync" class="link">Source</a></p><div class="doc"><p>Terminate the connection to the Directory.</p><p>Note that <code><a href="Ldap-Client-Internal.html#v:unbindAsync">unbindAsync</a></code> does not return an <code><a href="Ldap-Client-Internal.html#t:Async">Async</a></code>,
because LDAP server never responds to <code>UnbindRequest</code>s, hence
a call to <code><a href="Ldap-Client-Internal.html#v:wait">wait</a></code> on a hypothetical <code><a href="Ldap-Client-Internal.html#t:Async">Async</a></code> would have resulted
in an exception anyway.</p></div></div><div class="top"><p class="src"><a name="v:unbindAsyncSTM" class="def">unbindAsyncSTM</a> :: <a href="Ldap-Client-Internal.html#t:Ldap">Ldap</a> -&gt; <a href="http://hackage.haskell.org/package/base/docs/GHC-Conc.html#t:STM">STM</a> () <a href="src/Ldap-Client-Internal.html#unbindAsyncSTM" class="link">Source</a></p><div class="doc"><p>Terminate the connection to the Directory.</p><p>Note that <code><a href="Ldap-Client-Internal.html#v:unbindAsyncSTM">unbindAsyncSTM</a></code> does not return an <code><a href="Ldap-Client-Internal.html#t:Async">Async</a></code>,
because LDAP server never responds to <code>UnbindRequest</code>s, hence
a call to <code><a href="Ldap-Client-Internal.html#v:wait">wait</a></code> on a hypothetical <code><a href="Ldap-Client-Internal.html#t:Async">Async</a></code> would have resulted
in an exception anyway.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.0</p></div></body></html>