ОК, так что этот поток журналирования движется сам по себе, помещая ввод в какой-либо файл диска или что-то в этом роде. Если какой-то другой поток хочет «перехватить» эти данные, он должен дать сигнал потоку журналирования вызвать что-то еще с данными, а также зарегистрировать их. Поток журналирования обычно ожидает в некоторой входной очереди что-то для записи, да? Если это так, отправьте потоку сообщение в его входной очереди, чтобы сказать ему вызвать метод XXXX со всеми данными, которые должны быть зарегистрированы. Поток ведения журнала может хранить список всех событий, вызываемых при каждом действии ведения журнала.
Это имеет смысл? По сути, это расширение того, что предлагает Мари. Поток регистратора получит сообщения и включит какое-либо поле перечисления 'Ecommand' в сообщении. Псевдо-Паскаль:
case inMessage.com и из:
ElogString: logThis (inMessage.logString);
EaddNotification: notifierList.add (inMessage.event);
EdeleteNotification: notifierList.delete (inMessage.event);
конец;
Функция 'logThis' записывает logString в файл на диске и затем вызывает каждое событие в notifierList с данными.
Имеет ли это смысл? Это было, когда я это написал, но сегодня вечером был на аббатском эле (5%).
Rgds,
Martin