Я работаю над многопоточной библиотекой, которая отслеживает сетевой трафик из winpcap и преобразует пакеты в несколько различных типов структур данных для использования различными приложениями.
для каждого типа выходных данных потребуется несколько преобразований, каждое преобразование можно описать как получение 0-N объектов типа X, а затем создание 0-N типов Y, которые затем будут использованы следующим шагом в процесс.
Важно отметить, что при преобразовании X в Y. Если в настоящее время у нас есть только 5 (в качестве примера) X, этого может быть или не быть достаточно для создания Y, или может быть достаточно для создания многих Y, в зависимости от преобразования и полученных данных.
Чтобы быть последовательными, мы, очевидно, хотели бы использовать стандартный шаблон для каждого объекта преобразования. Я надеюсь, что кто-то может указать на обычно используемый шаблон для чего-то подобного, который, как мы надеемся, опирается на библиотеки std (или boost).
Кроме того, мы обсуждали возможность использования цепочек наследования для объединения различных слоев.
IE.
class ProcessXtoY: ProcessWtoX
{
void processData(iterator<X> begin, iterator<X> end)
{
/* create Y's, send output to */
}
virtual void processData(iterator<Y> begin, iterator<Y> end) = 0;
}
class ProcessYtoZ: ProcessXtoY
{
void processData(iterator<Y> begin, iterator<Y> end)
{
/* ... */
}
}
Кто-нибудь может предложить несколько примеров часто используемых шаблонов для этого типа проекта?