Глубины Indy


Событие OnExecute


Событие OnExecute ссылается на событие OnExecute класса TIdTCPServer. При реализации сервера по данной модели, должно быть определено событие OnExecute или перекрыт метод DoExecute.

Модель OnExecute допускает полный контроль разработчиком и позволяет реализовывать любые типы протоколов, включая двоичные протоколы.

После подсоединения клиента к серверу, возбуждается событие OnExecute. Если событие OnExecute не определено, то возбуждается исключение. Событие OnExecute возбуждается в цикле, как только подсоединяется клиент. Это очень важная деталь и поэтому разработчик должен побеспокоиться об

1. Помнить о том,  что событие возникает в цикле.

2.      Не препядствовать Indy выполянть обработку в цикле.

Внутренний цикл показан на следующей диаграмме:

На этапе проверки соединения выполняется следующие проверки:

  • Клиент еще подсоединен
  • Disconnect не был вызван во время OnExecute
  • Отсутствуют фатальные ошибки
  • Не было возбуждено необработанное исключение в OnExecute
  • Сервер еще активен

Если все эти проверки и другие проверки истинны, то событие OnExecute возбуждается снова. Поэтому, разработчик никогда не должен конструировать свой цикл внутри OnExecute, который будет дублировать это, так как это будет мешать Indy.



Содержание раздела