Pular para o conteúdo principal

OnSelect

OnSelect sobrescreve o algoritmo nativo de balanceamento. Você decide qual slave (índice do array) atende cada requisição — ou rejeita/derruba a conexão antes do endpoint rodar.

Configure no Thread Pool principal (orquestrador), não no slave.

Quando usar

  • Balanceamento customizado entre slaves
  • Rotear por endpoint/classe antes de executar a API
  • Barrar requisições suspeitas sem chegar ao handler

Configuração

[TP_UEX]
OnSelect=U_OnSelect

Assinatura

Function U_OnSelect(cClassName, cFunctionName, cProgramType) As Integer
ParâmetroConteúdo
cClassNameClasse do endpoint (vazio se for função)
cFunctionNameFunção ou método que será executado
cProgramType1 = annotation · 2 = LoadURNs

Lista de slaves: oRest:GetThreadPoolSlaves().

Retorno (obrigatório — numérico)

ValorEfeito
> 0Índice do slave que atende (1-based no array)
-1Delega ao algoritmo padrão do tlppCore
-2Rejeita — resposta de recusa ao cliente
-3Drop silencioso — fecha conexão sem HTTP (útil contra scan/DDoS)

Exemplo

#include "tlpp-core.th"
#include "tlpp-rest.th"

Function u_restGrader(cClassName As Character, cFunctionName As Character, cProgramType As Character) As Integer
Local nIndex := -1 As Integer
Local aSlaves := oRest:GetThreadPoolSlaves() As Array
Local nA := 0 As Integer

For nA := 1 To Len(aSlaves)
If (aSlaves[nA]:ID == 6)
nIndex := nA
Exit
EndIf
Next

Return nIndex

Você já sabe quem vai executar antes da API rodar — dá para validar permissão ou rota nesta camada, além do Authorization em TlppData.

Próximo passo: OnStart