Скажем, вы пишете приложение, которое должно реализовывать протокол HTTP. Протоколы довольно сложны и могут разрешать несколько команд в зависимости от того, на какой стадии транзакции они находятся.
В качестве примера посмотрите на SMTP. SMTP-сервер должен выдать ошибку, если команда «data» отправлена до получения «rcpt» и «mail».
Мой вопрос: каков наилучший способ обработки таких протоколов в коде? Есть ли какие-либо шаблоны дизайна, связанные с этим?
Редактировать: Этот вопрос относится к теории реализации протоколов. Я знаю, что использование библиотеки - лучший подход на практике.