h$-?(c      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Memcached Types(c) David Terei, 2016BSDcode@davidterei.comstableGHCNonefmemcacheMemcached response packet.memcacheThe status (success or error) of a Memcached operation returned in a . memcacheOperation successful. memcacheKey not found. memcacheKey exists when not expected. memcache#Value too large to store at server. memcache Invalid arguments for operation.memcache5Key-Value pair not stored at server (internal error).memcache8Value not numeric when increment or decrement requested.memcache&Server doesn't know requested command.memcacheServer out of memory.memcacheSASL authentication failed.memcache(SASL authentication requires more steps.KmemcacheRaw request is custom requests, dangerous as no corresponding raw response...]memcache"Memcached packet header (for both * and ).fmemcachePassword for authentication.gmemcacheUsername for authentication.hmemcache-SASL Authentication information for a server.nmemcache Noop request.omemcacheNoop response.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^e_`abcdfghijklmnohijklgfWXYTUVSRQPONML ]^e_`abcdmZ[\*+,-.789:;<=>?@ABCDEFGHIJK563412/0n !"#$%&'()oErrors Handling(c) David Terei, 2016BSDcode@davidterei.comstableGHCNone3 gmemcache;Errors related to Memcached protocol and bytes on the wire.memcache$Received an unknown response packet.memcacheUnknown Memcached operation.memcache%Unknown Memcached status field value.memcache?Unexpected length of a Memcached field (extras, key, or value).memcache;Response packet is for a different operation than expected.memcache5Network socket closed without receiving enough bytes.memcache Errors that occur on the client.memcache(All servers are currently marked failed.memcache+Timeout occurred sending request to server.memcache1All exceptions that a Memcached client may throw.memcacheMemcached operation error.memcacheError occuring on client side.memcache5Errors occurring communicating with Memcached server.memcacheConvert a status to  exception.memcacheCreate a properly formatted  protocol error.  Connection Handling(c) David Terei, 2016BSDcode@davidterei.comstableGHCNonememcache'Send a request to the Memcached server.memcacheRetrieve a single response from the Memcached server. FIXME: read into buffer to minimize read syscallsmemcache-Serialize a response to a ByteString Builder.memcache,Serialize a request to a ByteString Builder.memcache'Deserialize a Header from a ByteString.memcacheDeserialize a Response body.*+,-.*+,-.SASL Authentication(c) David Terei, 2016BSDcode@davidterei.comstableGHCNonememcache,Perform SASL authentication with the server.fghijklhijklgfServer Handling(c) David Terei, 2016BSDcode@davidterei.comstableGHCNone#$memcacheMemcached server connection.memcache$ID of server for consistent hashing.memcache+When did the server fail? 0 if it is alive.memcache)Create a new Memcached server connection.memcacheSend and receive a single request/response pair to the Memcached server.memcache9Run a function with access to an server socket for using  and .memcacheClose the server connection. If you perform another operation after this, the connection will be re-established.Cluster Handling(c) David Terei, 2016BSDcode@davidterei.comstableGHCNone#$>memcacheMemcached cluster.memcache?Options specifies how a Memcached cluster should be configured.memcacheNumber of times to retry an operation on failure. If consecutive failures exceed this value for a server, we mark it as down and failover to a different server for the next operation. Default is 2.memcacheAfter an operation has failed, how long to wait before retrying it while still within the  count?Default is 200ms.memcacheHow long to wait after a server has been marked down, before trying to use it again.Default is 1500ms.memcacheHow long to wait for an operation to complete before considering it failed.Default is 750ms.memcache;ServerSpec specifies a server configuration for connection.memcache!Hostname of server to connect to.memcache!Port number server is running on.memcacheAuthentication values to use for SASL authentication with this server.memcacheNumber of times to retry an operation before considering it failed.memcache;Establish a new connection to a group of Memcached servers.memcacheRun a Memcached operation against a particular server, handling any failures that occur, retrying the specified number of times.memcacheRun a Memcached operation against any single server in the cluster, handling any failures that occur, retrying the specified number of times.memcacheRun a Memcached operation against all servers in the cluster, handling any failures that occur, retrying the specified number of times.memcacheRun a Memcached operation against all servers in the cluster, handling any failures that occur, retrying the specified number of times. Similar to / but allows more flexible interaction with the % than a single request and response.Memcached Client(c) David Terei, 2016BSDcode@davidterei.comstableGHCNone'memcache*StatResults are a list of key-value pairs.memcacheA Memcached client, connected to a collection of Memcached servers.memcache;Establish a new connection to a group of Memcached servers.memcache5Gracefully close a connection to a Memcached cluster.memcache4Retrieve the value for the given key from Memcached.memcacheGet-and-touch: Retrieve the value for the given key from Memcached, and also update the stored key-value pairs expiration time at the server. Use an expiration value of 0 to store forever.memcacheUpdate the expiration time of a stored key-value pair, returning its version identifier. Use an expiration value of 0 to store forever.memcacheStore a new (or overwrite exisiting) key-value pair, returning its version identifier. Use an expiration value of 0 to store forever.memcacheStore a key-value pair, but only if the version specified by the client matches the Version of the key-value pair at the server. The version identifier of the stored key-value pair is returned, or if the version match fails, Nothing) is returned. Use an expiration value of 0 to store forever.memcacheStore a new key-value pair, returning it's version identifier. If the key-value pair already exists, then fail (return ). Use an expiration value of 0 to store forever.memcacheUpdate the value of an existing key-value pair, returning it's new version identifier. If the key doesn't already exist, the fail and return Nothing. Use an expiration value of 0 to store forever.memcacheIncrement a numeric value stored against a key, returning the incremented value and the version identifier of the key-value pair. Use an expiration value of 0 to store forever.memcacheDecrement a numeric value stored against a key, returning the decremented value and the version identifier of the key-value pair. Use an expiration value of 0 to store forever.memcacheAppend a value to an existing key-value pair, returning the new version identifier of the key-value pair when successful.memcachePrepend a value to an existing key-value pair, returning the new version identifier of the key-value pair when successful.memcacheDelete a key-value pair at the server, returning true if successful.memcacheRemove (delete) all currently stored key-value pairs from the cluster. The expiration value can be used to cause this flush to occur in the future rather than immediately.memcacheReturn statistics on the stored key-value pairs at each server in the cluster. The optional key can be used to select a different set of statistics from the server than the default. Most Memcached servers support "items", "slabs" or  "settings".memcacheVersion returns the version string of the Memcached cluster. We just query one server and assume all servers in the cluster are the same version. fghijklhijklgf    !"#$%&'()*+,-./0123456789:;;<<==>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijklmnopqrstuvwxyz{|}~l'memcache-0.3.0.1-5zt6tORLkVV1uuOfriq1P4Database.Memcache.ClientDatabase.Memcache.SocketDatabase.Memcache.TypesDatabase.Memcache.ErrorsDatabase.Memcache.SASLDatabase.Memcache.ServerDatabase.Memcache.Cluster1data-default-class-0.1.2.0-IIN1s3V8yfYEDHe5yjxXHVData.Default.Classdef&network-3.1.2.1-I09Sy6M5CNJIMsILXCwpAoNetwork.Socket.TypesSocketResponseResresOp resStatus resOpaqueresCasStatusNoErrorErrKeyNotFound ErrKeyExistsErrValueTooLargeErrInvalidArgsErrItemNotStoredErrValueNonNumericErrUnknownCommandErrOutOfMemory SaslAuthFailSaslAuthContinue OpResponseResGetResGetKResSetResAdd ResReplace ResDelete ResIncrement ResDecrement ResAppend ResPrependResTouchResGATResGATKResFlushResNoop ResVersionResStatResQuit ResSASLList ResSASLStart ResSASLStepRequestReqreqOp reqOpaquereqCasSERawSETouchSEIncrSESet OpRequestReqGetReqSetReqAdd ReqReplace ReqDelete ReqIncrement ReqDecrement ReqAppend ReqPrependReqTouchReqGATReqFlushReqNoop ReqVersionReqStatReqQuit ReqSASLList ReqSASLStart ReqSASLStepReqRawVersionFlags ExpirationDeltaInitialExtrasValueKeyKNoKey IncludeKeyQLoudQuietPktType PktRequest PktResponseHeaderopkeyLenextraLenstatusbodyLenopaquecasPasswordUsernameAuthenticationAuthNoAuthusernamepasswordmEMCACHE_HEADER_SIZEemptyReqemptyRes $fEqSERaw $fShowSERaw $fEqResponse$fShowResponse $fEqHeader $fShowHeader $fEqStatus $fShowStatus$fEqOpResponse$fShowOpResponse $fEqRequest $fShowRequest $fEqOpRequest$fShowOpRequest $fEqSETouch $fShowSETouch $fEqSEIncr $fShowSEIncr $fEqSESet $fShowSESet$fEqK$fShowK$fEqQ$fShowQ $fEqPktType $fShowPktType$fEqAuthentication$fShowAuthentication ProtocolError UnknownPkt UnknownOp UnknownStatus BadLengthWrongOp UnexpectedEOF protocolError ClientErrorNoServersReadyTimeout MemcacheErrorOpError throwStatuswrongOp$fExceptionMemcacheError$fEqMemcacheError$fShowMemcacheError$fEqProtocolError$fShowProtocolError$fEqClientError$fShowClientErrorsendrecv szResponse szRequestdzHeader dzResponse authenticateServersidfailed newServersendRecv withSocketclose $fOrdServer $fEqServer $fShowServerClusterOptionsoptsServerRetriesoptsFailRetryDelayoptsDeadRetryDelayoptsServerTimeout ServerSpecssHostssPortssAuthRetries newClusterkeyedOpanyOpallOpallOp'$fDefaultServerSpec$fDefaultOptions $fEqCluster $fShowCluster $fEqOptions $fShowOptions$fEqServerSpec$fShowServerSpec StatResultsClient newClientquitgetgattouchsetaddreplace increment decrementappendprependdeleteflushstatsversionbase GHC.MaybeNothing