#Paste this on http://www.websequencediagrams.com/ participant Initiator as I participant Acceptor as A participant StringEncoder participant StringDecoder participant MsgValidator participant MapEncoder participant MapDecoder participant FieldChecker participant SequenceNumberHandler participant LogOnHandler participant HeartbeatHandler participant TestRequestHandler participant ResendRequestHandler participant GapFillHandler participant SeqResetHandler participant LogOffHandler I->A: LogOn Msg activate I A->StringEncoder: Convert bytes\n to string StringEncoder->MsgValidator: Chk BodyLength \n& ChkSum field vals MsgValidator-->I:OnERROR:DISCONNECT MsgValidator->MapEncoder: Convert to\n tag/value map MapEncoder->FieldChecker: Check required\n session fields FieldChecker-->I:OnERROR:DISCONNECT FieldChecker->SequenceNumberHandler: Check sequence numbers SequenceNumberHandler->LogOnHandler: Process logon LogOnHandler->HeartbeatHandler: Do heartbeats loop until disconnect (if no outgoing msg in X seconds) HeartbeatHandler->SequenceNumberHandler: Send Heartbeat end SequenceNumberHandler->MapDecoder: Convert to\n FIX string MapDecoder->StringDecoder: Convert string to bytes StringDecoder->I:Response note over MapEncoder: Convert to a map\n like data structure\n for ease