Ребят, помогите, необходимо сделать типа чат, примерно как из примера http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/chat/chat_se... но со своими особенностями.
1) сообщения бинарные
2) могут быть большой длинны (например не строка, а 5мб)
Протокол типа:
Подключился клиент0, указал свой тип.
Подключился клиент1, указал свой тип и тд.
Если клиент передал сообщение без типа - сообщение получили все подключенные клиенты.
Если клиент передал сообщение с типом, его получили только пользователи с типом.
Тип - битовая маска, то есть можно составные типы.
Никак не могу решить как сделать правильно.
Меня смущает что
write_msgs_.push_back(msg);
Ещё я не очень понимаю в каком месте происходит освобождение памяти вот этой
chat_session_ptr new_session(new chat_session(io_service_, room_));
Ещё я не уверен будет ли всё это работать если io_service.run(); вызвать в 10 потоков? Не будет проблем? Типа много коннектов/много потоков
Правильно ли делать столько классов? Правильно ли весь код писать в одном main файле?
Ещё не понимаю вот что, почему чтение заголовка и тела разделяют на функции? можно же всё сделать в одной а в зависимости от флага выполнять действие?
Не могу найти ответы на свои вопросы. Кто разбирается в подобном, помогите определиться. А то что-то я загнался)