(index ("start-session" 0))
(def (sig (procedure "(start-session)" (id start-session))) (p "Procedure " (tt "start-session") " returns an ESMTP state machine object (a procedure), which takes in a stream containing an SMTP command and returns an appropriate " (tt "session-fsm") " value:") (pre " (define-datatype session-fsm session-fsm?\n   (Event (ev event?))\n   (Trans (ev event?) (fsm procedure?)))") (p "A stream in this case is defined as the representation used by the " (int-link "abnf") " library.") (p "The " (tt "Event") " variant signals an event that must be processed by the calling library, while " (tt "Trans") " signals an event and a state machine transition. The following events can be returned by this state machine:") (pre "(define-datatype event event?\n  (SayHelo       (s string?))\n  (SayHeloAgain  (s string?))\n  (SayEhlo       (s string?))\n  (SayEhloAgain  (s string?))\n  (SetMailFrom   (m mailbox?) (parameters? list))\n  (AddRcptTo     (m mailbox?) (parameters? list))\n  (StartData)\n  (NeedHeloFirst)\n  (NeedMailFromFirst)\n  (NeedRcptToFirst)\n  (NotImplemented) ;; Turn, Send, Soml, Saml, Vrfy, Expn.\n  (ResetState)\n  (SayOK)\n  (SeeksHelp    (s string?))\n  (Shutdown)\n  (SyntaxErrorIn (s string?))\n  (Unrecognized  (s string?)))"))
