Существует ли шаблон проектирования или абстракция, подходящая для определения поведения обмена сообщениями в сокетной коммуникации? - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю над игрой типа «Карты против человечества», в которой есть несколько четко определенных шаблонов отправки сообщений между клиентами и сервером:

Сервер ожидает формирования запросов и ответов. , затем отправляет их клиенту.

Клиенты ждут получения приглашений, затем все, кроме царя, выбирают свои ответы и отправляют их на сервер.

Сервер ожидает получения ответов и отправляет их всем.

И т. д.

Однако я заметил, что у меня есть набор сверхдлинных функций, которые ведут себя примерно так же в том, что они получают некоторые данные, изменяют некоторое состояние и уведомляют других пользователей через сокеты, в основном много шаблонов.

Итак, шаблон, который я заметил здесь:

  • кто-то ждет что-то должно произойти (поэтому вам нужен механизм синхронизации, я использовал std::condition_variable s)
  • что-то сделать (сгенерировать некоторые данные / запросить пользователя для ввода) * 101 9 *
  • отправлять материал другим участникам

Я думал об определении класса, который в основном имеет эти 3 компонента - переменную условия, std::function, который изменяет материал, и список сокетов. уведомить и данные для их отправки. На самом деле я не знаю каких-либо шаблонов проектирования сетевых приложений - есть ли абстракция, которая как-то подходит к тому, что я описал?

...