úÎJŻC d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcg  !"#$%&'defg()hij*+,-./012345k6lmnopqrst789:u;<=>Set a value in the cache. ?Add a value to cache. Fails if  already present. @$Replaces a value in cahce. Fails if  not present. vAGet a value from cache Bamount initial value Camount initial value wDDelete a cache entry EQuit FFlush the cache G3Keepalive. Flushes responses for quiet operations. HReturns the server version I,Appends the value to the value in the cache J-Prepends the value to the value in the cache K5Fetch statistics about the cahce. Returns a sequence  of responses. L#Add an opaque marker to a request. 1 This is returned unchanged in the corresponding  response. M%Add a version tag to a request. When  added to a set/replace request, the request / will fail if the data has been modified since % the CAS was retrieved for the item. x0A starter request with fields set to reasonable / defaults. The opcode field is left undefined. N/Returns the operation the request will perform yExtras Key Body OP Pulls a reponse to an operation  off of a handle.  May throw a )( Q  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ6N<;>?@ABCIJDEFGHKLM*+,-./01234P()9:78= &'5O%$#"! Q   %$#"!  !"#$%&''())* +,-./01234+,-./01234567889::;<=>?@ABCDEFGHIJKLMNOPz{|}~+The connection keeps a queue of callbacks. ! These are entries on that queue €‚Q,For thread safety of operations, we perform , all requests on a wrapper around a handle. ƒ„…†‡RCreate a connection.  Please don'!t use the handle after opening a  connection with it. ˆProcess the callback queue ‰Š0Until we have an implementation of RFC 1982, we  never return } ‹Œ5Take many responses off of the queue as long as they 4 match the passed in senquence. The second returned , value is the response which did not match. ŽS0This function ignores anything coming back from  the server.  Non-blocking. T/Place a synchronous request which only returns  one reply U-Place a synchronous request which may return  multiple response ( , pretty much) VShut down the connection.  Non-blocking. Put a request onto the handle Grab the next sequence number ‘"Add an item on the callback queue QRSTUVQRVTUSQRSTUV#Antoine Latter <aslatter@gmail.com>W0If an operation fails the result will return in ’ = with the failure code and a text description of the failure XYSet a value in the cache Z=Set a vlue in the cache. Fails if a value is already defined  for the indicated key. [BSet a value in the cache. Fails if a value is not already defined  for the indicated key. \Retrive a value from the cache ]Delete an entry in the cache ^FUpdate a value in the cache. This operation requires two round trips. G This operation can fail if the key is not present in the cache, or if 7 the value changes in the cache between the two calls. < So watch out! Even if the value exists the operation might 2 not go through in the face of concurrent access. ATesting indicates that if we fail because we could not gaurantee $ atomicity the failure code will be #. _*Increment a value in the cache. The first “ argument is the D amount by which to increment and the second is the intial value to + use of the key does not yet have a value. 5 The return value is the updated value in the cache. `*Decrement a value in the cache. The first “ argument is the D amount by which to decrement and the second is the intial value to + use of the key does not yet have a value. 5 The return value is the updated value in the cache. a Delete all entries in the cache ”b<Returns a list of stats about the server in key,value pairs • Returns a single stat. Example: ' stat con pid' will return  the c"Returns the version of the server  !"#$%;<QRVWXYZ[\]^_`abcRVQ<;XW%$#"! Y\]Z[^_`abc WXYZ[\]^_`abc–      !"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ABCDG\EFI]K^-_9`ab8cdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹‰ŒŽstarling-0.1.0Network.Starling.CoreNetwork.Starling.ConnectionNetwork.StarlingOpCodePrependQAppendQFlushQQuitQ DecrementQ IncrementQDeleteQReplaceQAddQSetQStatPrependAppendGetKQGetKVersionNoOpGetQFlushQuit Decrement IncrementDeleteReplaceAddSetGetResponseStatus OutOfMemoryUnknownCommandIncrDecrOnNonNumeric ItemNotStoredInvalidArguments ValueTooLarge KeyExists KeyNotFoundNoErrorDataTypeRawDataStarlingReadErrorResponseResrsMagicrsOp rsDataTypersStatusrsOpaquersCasrsExtrasrsKeyrsBodyCASRequest Deserialize deserialize Serialize serializeValueKeyOpaquesetaddreplaceget increment decrementdeletequitflushnoopversionappendprependstat addOpaqueaddCAS requestOpnullCAS getResponse ConnectionopenignorantRequest synchRequestsynchRequestMulticloseResultMResultupdatestatsRsMagicRqMagicResponseHeaderResHeadrsHeadTotalLenReqrqMagicrqOp rqDataTyperqOpaquerqCasrqExtrasrqKeyrqBody ErrorInfo setExtras incExtras baseRequestrequest CompareResultDoneMatchKeepRKeepQQItem QHandleMulti QHandleRespQDoneConncon_lockcon_hcon_q con_opaquereadLoop tryNextQItem compareOpaqueprocessResponse takeResponses withConLock withMVar_ putRequest nextOpaqueenqueuebase Data.EitherLeftGHC.WordWord64 simpleRequestoneStat