؜ޏ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Tobias SchoofsLGPL experimentalportableNone=A successfully sent message is automatically considered ack'dWThe client is expected to explicitly confirm the receipt of a message by sending an F frame; all message older than the ack'd message since the last V (or the beginning of the session) are implicitly ack'd as well. This is called  cumulative ack.nNon-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'd9The 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, HeartBeatWcommands sent from broker to application are: Connected, Message, Error, HeartBeat0Sent by the application to initiate a connectionSame as Connect, but with STOMP instead of CONNECT,Sent by the broker to confirm the connection-Sent by the application to end the connection 7Sent by the application to publish a message in a queue jSent by the broker to forward a message published in a queue to which the application has subscribed /Sent by the application to subscribe to a queue 3Sent by the application to unsubscribe from a queue .Sent by the application to start a transaction/Sent by the application to commit a transaction.Sent by the application to abort a transaction0Sent by the application to acknowledge a message;Sent by the application to negatively acknowledge a message7Keep-alive message sent by both, application and broker%Sent by the broker to report an error4Sent by the broker to confirm the receipt of a frameThis is a frameCDescription of a server consisting of name, version and comments'Heart-beat configuration; the first h 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.?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.!The Frame body is represented as strict  ByteString.Tuple of (key, value)get name from get version from get comments from make login headermake passcode header make  client-id header!make  destination header"make content-length header#make  content-type header$make  transaction header%make receipt headermake  receipt-id header&make selector header'make id header (subscribe frame)(make  message-id header)make ack header (subscribe frame)*make  subscription header+make session header (connected frame),make message header (error frame)-make version header (connected frame).make accept-version header (connect frame)/make host header (connect frame)0make  heart-beat header1make server header (connected frame)2make 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).B: 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 headers3Same as 2D, but the result is a "STOMP" frame rather than a "CONNECT" frame4make 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.5make a  6 frame (Application -> Broker). The parameters are:xDestination: The name of the queue as it is known by the broker and other applications using the queue,: The Acknowledge Mode for this subscriptionSelector: 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.6make 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 headers7make a  6 frame (Application -> Broker). The parameters are:[Destination: The name of the queue where the message should be published6Transaction: 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  K is not part of a transaction, the string shall be empty.Receipt: A receipt (see 5 for details)H: 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 message8make 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).FDestination: 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 payload9make 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:make a 6 frame (Application -> Broker). The parameters are: TransactionP: A unique transaction identifier defined by the application. : A receipt (see 5 for details)%: Additional, broker-specific headers;make 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<make 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 receivedFTransaction: Acks may be part of a transaction (see 7 for details). Receipt: see 5 for details=make 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 receivedGTransaction: Nacks may be part of a transaction (see 7 for details). Receipt: see 5 for details>make a HeatBeatY frame (Application -> Broker and Broker -> Application)?make a 4 frame (Application -> Broker). The parameter is: Receipt: see 5 for details@make a 4 frame (Broker -> Application). The parameter is:=Receipt: The receipt identifier received from the application-: List of additional, broker-specific headersAmake a 6 frame (Broker -> Application). The parameters are:+Error Message Id: A short error descriptioneReceipt 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 messageBget  destination from  ,  ,   or  Cget  transaction from  , , ,  ,  or Dget receipt or  receipt-id from any frame, but , ,  , Eget host from Fget accept-version from Gget  heart-beat from  or Hget login from Iget passcode from Jget  client-id from Kget version from Lget session from Mget server from Nget id from   or  Oget ack from  Pget selector from  Qget  subscription from ,  or  Rget ack or  message-id from  Sget body from  ,  , Tget  content-type from  ,  , Uget content-length from  ,  , Vget message from W get all additional headers from   or  X gets the  of a YappendZcons[snoc\ check if  represents a valid aconvert list of  to bconvert  to cconvert  to list of dconvert  to econvert  to  fconvert  to  gconvert  to  hconvert  to  iremove headers (list of ) from list of jremove header () from list of kconvert  to lconvert  to m_negotiates version - if no common version is found, the function results in version 1.0!nnegotiates heart-beatosets the transaction header to an empty string; this is a useful function for brokers: when a transaction has been committed, the  i messages can be handled by the same function without, accidentally, iterating into a new transaction.p converts a  into a q converts a  into a r converts the  into a smake  frametmake  frameumake  framevmake  framewmake   framexmake   frameymake   framezmake   frame{make   frame|make  frame}make  frame~make  framemake  framemake  framemake  frame converts a   frame into a   frame; parameters: message idsubscription id The original   frame 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 Compliance with protocol version  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ \2345678A9:;<=?>@stuvyzwx{|}~!"$%&')+,(.-/0#1* dcbaefklhgmnji`_XpqroBCDHIJEFKGLMQPNORSTUVW[ZY]^ Y !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Y Z [ (c) Tobias SchoofsLGPL  experimentalportableNone,Parses a ByteString at once with Attoparsec . May fail or conclude.The Stomp Parser+     +           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     #stompl-0.5.0-3zHzIKDGXuK3ZUZG16aMjgNetwork.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$fShowFrameType$fReadFrameType $fEqFrameType $fEqAckMode $fShowFrame $fEqFrame stompAtOnce stompParserghc-prim GHC.TypesInt mkRecIdHdr#mime-0.4.0.2-CR9JDBzWqHFACipufHFq2FCodec.MIME.TypeTypebaseGHC.BaseStringbytestring-0.10.8.1Data.ByteString.Internal ByteStringConFrame StompFrame CondFrameSubFrame USubFrameSndFrameDisFrameBgnFrameCmtFrameAckFrame NackFrame AbrtFrameMsgFrameRecFrameErrFrame BeatFramefrmLoginfrmPassfrmHostfrmBeatfrmAcVerfrmCliIdfrmHdrsfrmSesfrmVerfrmSrvfrmDestfrmAckfrmSelfrmIdfrmRecfrmTransfrmLenfrmMimefrmBodyfrmSubfrmAckIdfrmMsgnoBeatshowType parseMIMETypedefMime defVerStr defVersion noSrvDeschdrLoghdrPasshdrCliIdhdrDesthdrSubhdrLenhdrMimehdrTrnhdrRechdrRecIdhdrSelhdrIdhdrAckhdrAckIdhdrSeshdrMsghdrMIdhdrAcVerhdrVerhdrHosthdrBeathdrSrvmkHeader mkConStmp cleanWhite putHeaders putHeader toHeaders subRecTrn normaliseputBody findStrHdrmkConTypeFrame findSubRecTrngetHdrs*attoparsec-0.13.1.0-K5Fyc3MOMYs22DiprZQxLM#Data.Attoparsec.ByteString.Internal parseOnlymsgTypebeatsendmessageprsErrorconnectstomp connected disconnect subscribe usubscribebegincommitabortacknackreceipt bodyFrame connectFrame genericFrameheadersheaders' endHeaders getHeaderheader keyValSepterminalbodyeobescText ignoreBody skipWhitenuleolcrspccolesc_c_r_n