Ξυ³h$>;       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ(c) Tobias SchoofsLGPL experimentalportableNone9€stompl=A successfully sent message is automatically considered ack'dstomplΧThe client is expected to explicitly confirm the receipt of a message by sending an Ζ frame; all message older than the ack'd message since the last Φ (or the beginning of the session) are implicitly ack'd as well. This is called  cumulative ack.stomplξNon-cumulative ack: The client is expected to explicitly confirm the receipt of a message by sending an 3 frame; only the message with the msg-id in the  frame is actually ack'dstompl9The frame type identifies, what the Stomp protocol calls command;–commands sent from application to broker are: Connect, Disconnect, Subscribe, Unsubscribe, Send, Begin, Commit, Abort, Ack, Nack, HeartBeatΧcommands sent from broker to application are: Connected, Message, Error, HeartBeatstompl0Sent by the application to initiate a connectionstomplSame as Connect, but with STOMP instead of CONNECTstompl,Sent by the broker to confirm the connectionstompl-Sent by the application to end the connection stompl7Sent by the application to publish a message in a queue stomplκSent by the broker to forward a message published in a queue to which the application has subscribed stompl/Sent by the application to subscribe to a queue stompl3Sent by the application to unsubscribe from a queue stompl.Sent by the application to start a transactionstompl/Sent by the application to commit a transactionstompl.Sent by the application to abort a transactionstompl0Sent by the application to acknowledge a messagestompl;Sent by the application to negatively acknowledge a messagestompl7Keep-alive message sent by both, application and brokerstompl%Sent by the broker to report an errorstompl4Sent by the broker to confirm the receipt of a framestomplThis is a framestomplΓDescription of a server consisting of name, version and commentsstompl'Heart-beat configuration; the first θ of the pair represents the frequency in which the sender wants to send heart-beats; the second represents the highest frequency in which the sender can accept heart-beats. The frequency is expressed as the period in milliseconds between two heart-beats. For details on negotiating heart-beats, please refer to the Stomp specification.stompl?The Stomp version used or accepted by the sender; the first  is the major version number, the second is the minor. For details on version negotiation, please refer to the Stomp specification.stompl!The Frame body is represented as strict  ByteString.stomplTuple of (key, value)stomplget name from stomplget version from stomplget comments from stomplmake login headerstomplmake passcode header stomplmake  client-id header!stomplmake  destination header"stomplmake content-length header#stomplmake  content-type header$stomplmake  transaction header%stomplmake receipt header&stomplmake selector header'stomplmake id header (subscribe frame)(stomplmake  message-id header)stomplmake ack header (subscribe frame)*stomplmake  subscription header+stomplmake session header (connected frame),stomplmake message header (error frame)-stomplmake version header (connected frame).stomplmake accept-version header (connect frame)/stomplmake host header (connect frame)0stomplmake  heart-beat header1stomplmake server header (connected frame)2stomplmake a 6 frame (Application -> Broker). The parameters are:)User: user to authenticate at the broker.1Passcode: password to authenticate at the broker.Host: broker's virtual hoast (e.g.& stomp.broker.github.org).Β: the clients bid in negotiating the heart-beat.': the versions supported by the client.ΒClientId: Client identification for persistent connections. Note that the client id is not a standard Stomp feature, but specific to ActiveMQ and other brokers.-: List of additional, broker-specific headers3stomplSame as 2Δ, but the result is a "STOMP" frame rather than a "CONNECT" frame4stomplmake a 6 frame (Broker -> Application). The parameters are:άSession: A unique identifier created by the broker and identifying the session%: The heart-beat agreed by the broker$: The version accepted by the broker: The server description.: List of additional, broker-specific headers.5stomplmake a  6 frame (Application -> Broker). The parameters are:ψDestination: The name of the queue as it is known by the broker and other applications using the queue,: The Acknowledge Mode for this subscription―Selector: An expression defining those messages that are of actual for client. The Stomp protocol does not define a language for selectors; it is even not entirely clear, where messages are selected: already at the broker, or only by the client. Some brokers provide pre-selection of messages, others do not. ΏSubscription Id: A unique identifier distinguishing this subscription from others to the same queue. The identifier is defined by the application.ΉReceipt: A unique identifier defined by the application to request confirmation of receipt of this frame. If no receipt is wanted, the string shall be empty..: List of additional, broker-specific headers.6stomplmake an  6 frame (Application -> Broker). The parameters are:πDestination: The queue name; either a destination or a subscription id must be given. (According to protocol version 1.1, the subscription id is mandatory on both,   and  .)2Subscription Id: The subscription identifier (see 5)Receipt: The receipt (see 5)%: Additional, broker-specific headers7stomplmake a  6 frame (Application -> Broker). The parameters are:ΫDestination: The name of the queue where the message should be publishedΆTransaction: A unique identifier indicating a running transaction; if sent with a transaction, the message will not be delivered to subscribing applications, before the transaction is committed. If the  Λ is not part of a transaction, the string shall be empty.Receipt: A receipt (see 5 for details)Θ: The content type of the payload message as MIME Type'Length: The length of the type in bytes‡: List of additional headers; Stomp protocol requires that user-specified headers are passed through to subscribing applications. These headers may, for instance, be use by selectors to select messages. : The payload message8stomplmake a  6 frame (Broker -> Application). The parameters are:‘Subscription Id: The message was sent because the application subscribed to the queue with this subscription id (see 5).ΖDestination: The name of the queue, in wich the message was published.>Message Id: A unique message identifier, defined by the broker': The type of the playload as MIME Type*Length: The length of the payload in bytes&: A list of user-defined headers (see 7 for details) : The payload9stomplmake a  6 frame (Application -> Broker). The parameters are:ΫTransaction: A unique transaction identifier defined by the application. Receipt: A receipt (see 5 for details)%: Additional, broker-specific headers:stomplmake a 6 frame (Application -> Broker). The parameters are: TransactionΠ: A unique transaction identifier defined by the application. : A receipt (see 5 for details)%: Additional, broker-specific headers;stomplmake an 6 frame (Application -> Broker). The parameters are:ΫTransaction: A unique transaction identifier defined by the application. Receipt: A receipt (see 5 for details)%: Additional, broker-specific headers<stomplmake an 6 frame (Application -> Broker). The parameters are:5Message Id: The identifier of the message to be ack'dίSubscription Id: The subscription, through which the message was receivedΖTransaction: Acks may be part of a transaction (see 7 for details). Receipt: see 5 for details=stomplmake a 6 frame (Application -> Broker). The parameters are:6Message Id: The identifier of the message to be nack'dίSubscription Id: The subscription, through which the message was receivedΗTransaction: Nacks may be part of a transaction (see 7 for details). Receipt: see 5 for details>stomplmake a HeatBeatΩ frame (Application -> Broker and Broker -> Application)?stomplmake a 4 frame (Application -> Broker). The parameter is: Receipt: see 5 for details@stomplmake a 4 frame (Broker -> Application). The parameter is:=Receipt: The receipt identifier received from the application-: List of additional, broker-specific headersAstomplmake a 6 frame (Broker -> Application). The parameters are:+Error Message Id: A short error descriptionεReceipt Id: The receipt of frame sent by the application to which this error relates.: The format of the error message as MIME Type'Length: The length of the error message-: List of additional, broker-specific headers: The error messageBstomplget  destination from  ,  ,   or  Cstomplget  transaction from  , , ,  ,  or Dstomplget receipt or  receipt-id from any frame, but , ,  , Estomplget host from Fstomplget accept-version from Gstomplget  heart-beat from  or Hstomplget login from Istomplget passcode from Jstomplget  client-id from Kstomplget version from Lstomplget session from Mstomplget server from Nstomplget id from   or  Ostomplget ack from  Pstomplget selector from  Qstomplget  subscription from ,  or  Rstomplget ack or  message-id from  Sstomplget body from  ,  , Tstomplget  content-type from  ,  , Ustomplget content-length from  ,  , Vstomplget message from Wstompl get all additional headers from   or  Xstompl gets the  of a YstomplappendZstomplcons[stomplsnoc\stompl check if ‘ represents a valid astomplconvert list of  to ‘bstomplconvert  to ‘cstomplconvert ‘ to list of dstomplconvert ‘ to estomplconvert  to ‘ fstomplconvert ‘ to  gstomplconvert  to ‘ hstomplconvert ‘ to  istomplremove headers (list of ‘) from list of jstomplremove header (‘) from list of kstomplconvert  to ‘lstomplconvert ‘ to mstomplίnegotiates version - if no common version is found, the function results in version 1.0!nstomplnegotiates heart-beatostompl‹sets the transaction header to an empty string; this is a useful function for brokers: when a transaction has been committed, the  ι messages can be handled by the same function without, accidentally, iterating into a new transaction.pstompl converts a  into a ’qstompl converts a  into a ‘rstompl converts the  into a ’sstomplmake  frametstomplmake  frameustomplmake  framevstomplmake  framewstomplmake   framexstomplmake   frameystomplmake   framezstomplmake   frame{stomplmake   frame|stomplmake  frame}stomplmake  frame~stomplmake  framestomplmake  frame€stomplmake  framestomplmake  frame‚stompl converts a   frame into a   frame; parameters: message idsubscription idack id The original   frameƒstompl converts a  frame into a > frame, negotiating heart-beats and version; parameters: server desc session idcaller's bid for heart-beat caller's supported versions the original  frame„stompl Compliance with protocol version…   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…  \2345678A9:;<=?>@stuvyzwx{|}~€!"$%&')+,(.-/0#1* dcbaefklhgmnji`_Xpqr‚ƒo„BCDHIJEFKGLMQPNORSTUVW[ZY]^Y Z [ (c) Tobias SchoofsLGPL experimentalportableNone:ώstompl,Parses a ByteString at once with Attoparsec “. May fail or conclude.ŽstomplThe Stomp ParserŽŽ”      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘#stompl-0.6.0-AGq9BXkHMa99rKE0cENDRWNetwork.Mom.Stompl.FrameNetwork.Mom.Stompl.ParserAckModeAutoClient ClientIndi FrameTypeConnectStomp Connected DisconnectSendMessage Subscribe UnsubscribeBeginCommitAbortAckNack HeartBeatErrorReceiptFrameSrvDescHeartVersionBodyHeader getSrvName getSrvVer getSrvCmtsmkLogHdr mkPassHdr mkCliIdHdr mkDestHdrmkLenHdr mkMimeHdrmkTrnHdrmkRecHdrmkSelHdrmkIdHdrmkMIdHdrmkAckHdrmkSubHdrmkSesHdrmkMsgHdrmkVerHdr mkAcVerHdr mkHostHdr mkBeatHdrmkSrvHdr mkConnectmkStomp mkConnected mkSubscribe mkUnsubscribemkSend mkMessagemkBeginmkCommitmkAbortmkAckmkNackmkBeat mkDisconnect mkReceiptmkErrgetDestgetTrans getReceiptgetHost getVersionsgetBeatgetLogin getPasscodegetCliId getVersion getSession getServergetId getAcknow getSelectorgetSub getMsgAckgetBodygetMime getLengthgetMsg getHeaderstypeOf>|<<||> isValidAckupStringnumericgetLengetAck versToValverToVal valToVersvalToVer beatToVal valToBeatsrvToStrstrToSrvrmHdrsrmHdrackToValvalToAck negoVersionnegoBeat resetTransputFrametoString putCommand mkConFrame mkStmpFrame mkCondFrame mkDisFrame mkSndFrame mkMsgFrame mkSubFrame mkUSubFrame mkBgnFrame mkCmtFrame mkAbrtFrame mkAckFrame mkNackFrame mkRecFrame mkErrFramesndToMsg conToCondcomplies $fReadAckMode $fShowAckMode $fShowFrame $fEqFrame $fEqAckMode$fShowFrameType$fReadFrameType $fEqFrameType stompAtOnce stompParserghc-prim GHC.TypesInt#mime-0.4.0.2-2TOdhTHzPMHAH8QUXgdhWsCodec.MIME.TypeTypebaseGHC.BaseStringbytestring-0.10.10.0Data.ByteString.Internal ByteString*attoparsec-0.13.2.4-JRid9zEiLev1OUHUDdftfY#Data.Attoparsec.ByteString.Internal parseOnly