Я ищу предложения или шаблоны проектирования для анализа и генерации сетевых пакетов (сеть сама по себе не важна сама по себе). Каждый пакет имеет заголовок фиксированной длины и полезную нагрузку переменной длины. Анализ полезной нагрузки будет зависеть от типа пакета. Прямой способ сделать это (при условии, что ввод поступит из потока, консоли или сети):
class Header {
public:
Header(istream &);
istream& read(istream &);
private:
uint32_t type;
uint32_t payload_length;
}
class PayloadTypeA {
public:
PayloadTypeA {}
istream& read(istream &);
private:
uint32_t payload_1;
uint32_t payload_2;
}
class PayloadTypeB {
...
}
Я предполагаю, что логика обработки будет такой: сначала прочитать заголовок, затем проверить тип пакета, а затем решить, какой тип полезной нагрузки использовать для чтения остальных.
Однако я чувствую, что это решение кажется несколько неуклюжим - мне интересно, есть ли лучшее решение или идиомы дизайна, которым я должен следовать?
спасибо
Оливер