Я проектирую сервер, который используется в UDP-связи с использованием MFC. У меня есть следующие классыЯвляется ли мой дизайн для сервера сокетов UDP правильным?
- CMyDlialog - Берегите интерфейс пользователя
- CController - Закон как посредник между всеми классами
- CProtocolManager - Позаботьтесь о кодировании/декодировании сбщи (Это статический класс)
- CConnectionManager - Береги UDP соединения, передачи, приема
я создаю объект CConnectionManager в качестве переменной-члена в CController и объекта CController как переменная члена в CMyDialog.
Когда пользователь вводит что-то и нажимает send, я вызываю метод в CControler, который вызовет метод в CProtocolManager для создания пакета и вызовет метод CConnectionManager для его отправки.
Когда я получаю некоторые данные, он обрабатывается в потоке CConnectionManager. Там я создаю локальный объект CController и вызываю метод, который передаст данные в CProtocolManager для декодирования.
Теперь я хочу сообщить пользовательскому интерфейсу о данных, как это сделать CControler? я могу опубликовать сообщение в пользовательском интерфейсе, сделав основной дескриптор диалога глобальным, это правильный подход.
Также скажите, правильна ли эта конструкция.
Заранее благодарен
Итак, я должен передать AbstractMessageReceiver * функции потока, которая получает данные и передает это контроллеру, который вызовет фактический метод получения? – Jeeva
, вы можете это сделать, но мне интересно, нужно ли вам создавать локальный контроллер или просто передать существующий контроллер диспетчеру соединений? Затем вы можете передать AbstractMessageReceiver контроллеру, и диспетчер соединений не должен беспокоиться об этом. – Philipp