TsgcHTTPServer › Eventos › OnSSLGetHandler
Disparado antes de o manipulador SSL ser criado, de modo que uma instância de manipulador personalizado do lado do servidor possa ser fornecida.
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler é gerado logo antes de o servidor construir o TLS IOHandler utilizado para os bindings SSL. Atribua a aSSLHandler uma instância de sua própria classe herdada de TIdServerIOHandlerSSLBase para substituir o handler padrão, por exemplo para conectar uma implementação especializada de OpenSSL ou SChannel. Deixe aSSLHandler não atribuído para permitir que o servidor crie o handler padrão; nesse caso, OnSSLAfterCreateHandler ainda pode ser utilizado para ajustar propriedades após a criação. O componente assume a propriedade do handler atribuído aqui e o liberará quando o servidor for destruído.
Quando IOHandlerOptions.IOHandlerType for iohIOCP ou iohEPOLL, o handler atribuído a aSSLHandler deve herdar de TsgcIdServerIOHandlerOpenSSLIOCP (IOCP) ou TsgcIdServerIOHandlerOpenSSLEPOLL (EPOLL), pois somente esses handlers podem ser controlados pelo motor de E/S orientado a eventos. Com qualquer outro handler, o servidor gera uma exceção ao ser iniciado. Os valores de IOHandlerOptions, como threads, timeouts e TCPKeepAlive, são aplicados ao handler antes de OnSSLAfterCreateHandler ser disparado, portanto os valores definidos nesse evento têm precedência. Se você precisar apenas alterar algumas propriedades do handler padrão, utilize OnSSLAfterCreateHandler em vez de substituir o handler.
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;