Перехватчик – это более высокий уровень,
чем обработчик ввода/вывода и используется для модификации или
перехвата данных независимо от источника и приемника.
Перехватчики были сильно изменены в версии
9.0. В версии 8.0 перехватчик мог предоставлять только весьма
ограниченную функциональность обработчика ввода/вывода.
Перехватчики могут трансформировать уже принятые данные или
данные для передачи. Перехватчики более не поддерживают никакой
функциональности обработчика ввода/вывода (IOHandler), поскольку
введены новые классы IOHandler, со всей необходимой
функциональностью.
Перехватчики по-прежнему могут выполнять
преобразования данных и но предоставляют больше возможностей в
Indy 9.0. Возможности трансформация в Indy 8.0 были сильно
ограничены, так как данные должны были иметь один и тот же
размер. Это делало невозможным использовать их для реализации
сжатия данных или логирования, поскольку не позволяло изменить
размер данных.
Перехватчики позволяют изменять данные
после того, как они были приняты в IOHandler или изменять их
перед посылкой в IOHandler. Перехватчики в данный момент
используются для реализации ведения логов и отладки компонент.
Они могут быть также использованы для реализации шифрования,
сжатия, статических коллекторов или ограничителя трафика.
13.1. Перехватчики
Перехватчики взаимодействуют с входящими
или исходящими данными и позволяют их записывать в лог или
модифицировать. Перехватчики позволяют изменять входящие данные,
после того как они приняты из сети, перед выдачей их
пользователю.
Перехватчики также позволяют
модифицировать исходящие данные перед посылкой в сеть.
Перехватчики могут быть использоваться для реализации ведения
логов, шифрования и сжатия данных.
Клиентские перехватчики базируются на
соединениях (по одному на каждое). Они также могут быть
использованы на сервере, если они назначены индивидуальному
соединению.
Примечание: Перехватчики в Indy 9 отличаются от перехватчиков в
Indy 8. Перехватчики в Indy 8, выполняли комбинированную роль
перехватчика и обработчика ввода/вывода. Что делало сложным
разделение функций перехвата и обработки. Перехватчики Indy 8
также не могли изменять размер данных и поэтому были непригодны
для сжатия.
13.2. Ведение логов (Logging)
Indy 8.0 имел один компонент ведения
логов, который мог быть использован для различных источников. В
Indy 9.0 компоненты логов теперь базируются на новом общем
классе и имеют специализированные классы. Базовый класс также
предоставляет свойства и функциональность, такую как регистрация
времени, в дополнение к данным.
Все классы ведения логов реализованы, как
перехватчики. Это означает, что они перехватывают входящие
данные, после того, как они были прочитаны и перед передачей
исходящих в источник.
Специализированные классы логов,
следующее:
• TIdLogEvent – возбуждает события, когда данные приняты, или
переданы, или при появлении события состояния. Класс TIdLogEvent
полезен для реализации пользовательских логов, без необходимости
в реализации нового класса.
• TIdLogFile – Записывает данные в файл.
• TIdLogDebug – Записывает данные в окно отладки Windows или в
консоль Linux. Также отмечает данные, как принятые данные,
переданные данные или информация о статусе. Класс TidLogDebug
полезен для проведения простой отладки.
• TIdLogStream – Не добавляет комментариев, отметок к данным,
как другие классы. Вместо этого просто записывает сырые данные в
указанный поток. Класс TIdLogStream может использоваться по
разному, но обычно он очень эффективно используется для QA
тестирования и удаленной отладки. Могут быть построены и
пользовательские классы логов.
|