TsgcHTTPServer › Zdarzenia › OnSSLGetHandler
Wywoływane przed utworzeniem procedury obsługi SSL, co umożliwia dostarczenie niestandardowej instancji procedury obsługi po stronie serwera.
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler jest wywoływane tuż przed tym, jak serwer tworzy IOHandler TLS używany dla powiązań SSL. Należy przypisać do aSSLHandler instancję własnej klasy dziedziczącej po TIdServerIOHandlerSSLBase, aby zastąpić domyślny handler, na przykład w celu podłączenia specjalistycznej implementacji OpenSSL lub SChannel. Należy pozostawić aSSLHandler nieprzypisany, aby serwer utworzył domyślny handler; w takim przypadku zdarzenie OnSSLAfterCreateHandler może być nadal używane do dostosowania właściwości po jego utworzeniu. Komponent przejmuje własność handlera przypisanego w tym miejscu i zwolni go po zniszczeniu serwera.
Gdy IOHandlerOptions.IOHandlerType ma wartość iohIOCP lub iohEPOLL, handler przypisany do aSSLHandler musi dziedziczyć po TsgcIdServerIOHandlerOpenSSLIOCP (IOCP) lub TsgcIdServerIOHandlerOpenSSLEPOLL (EPOLL), ponieważ tylko te handlery mogą być sterowane przez zdarzeniowy silnik wejścia/wyjścia. Przy każdym innym handlerze serwer zgłasza wyjątek podczas uruchamiania. Wartości IOHandlerOptions, takie jak wątki, limity czasu i TCPKeepAlive, są stosowane do handlera, zanim zostanie wywołane zdarzenie OnSSLAfterCreateHandler, więc wartości ustawione w tym zdarzeniu mają pierwszeństwo. Jeśli wystarczy zmienić tylko kilka właściwości domyślnego handlera, należy użyć OnSSLAfterCreateHandler zamiast zastępować handler.
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;