Я работаю над игрой типа «Карты против человечества», в которой есть несколько четко определенных шаблонов отправки сообщений между клиентами и сервером:
Сервер ожидает формирования запросов и ответов. , затем отправляет их клиенту.
Клиенты ждут получения приглашений, затем все, кроме царя, выбирают свои ответы и отправляют их на сервер.
Сервер ожидает получения ответов и отправляет их всем.
И т. д.
Однако я заметил, что у меня есть набор сверхдлинных функций, которые ведут себя примерно так же в том, что они получают некоторые данные, изменяют некоторое состояние и уведомляют других пользователей через сокеты, в основном много шаблонов.
Итак, шаблон, который я заметил здесь:
- кто-то ждет что-то должно произойти (поэтому вам нужен механизм синхронизации, я использовал
std::condition_variable
s) - что-то сделать (сгенерировать некоторые данные / запросить пользователя для ввода) * 101 9 *
- отправлять материал другим участникам
Я думал об определении класса, который в основном имеет эти 3 компонента - переменную условия, std::function
, который изменяет материал, и список сокетов. уведомить и данные для их отправки. На самом деле я не знаю каких-либо шаблонов проектирования сетевых приложений - есть ли абстракция, которая как-то подходит к тому, что я описал?