Páginas filhas
  • Classe FWIPCWait

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleConsumo de Recursos e Licenças

A classe gerência a abertura de threads de forma dinâmica, ajustando-se conforme a demanda de utilização. Isso significa que o consumo de memória e processamento no AppServer será proporcional à quantidade de threads ativas no momento. Sendo assim o consumo de licenças também pode ser impactado.


Informações
titleDisponibilidade

Classe disponível para utilização na lib 20241007 ou superior.


Descrição:

A classe FWIPCWait coordena o processamento entre threads, criando instâncias automaticamente que se iniciam de acordo com a disponibilidade dos servidores.

Métodos:

Índice
maxLevel15
printablefalse



New()

Descrição:

Método construtor da classe.


Sintaxe:

New(cSemaphore, nTimeOut)

→ Return

Descrição:

Método construtor da classe

- > Return


Parâmetros:

NomeTipoDescrição

cSemaphore

character

identificar a fila de processamento.

nTimeOut

Number

Indica o tempo de time-out em milissegundos

SetThreads()

Sintaxe:

.





SetThreads(

nThreads

)

->Return

Descrição:

Inicializa o

numero

número de threads para execução da fila.


Sintaxe:

SetThreads(nThreads)->Return


Parâmetros:

NomeTipoDescrição

nThreads

Number

Indica o numero de threads.





SetEnvironment()

Sintaxe:

Descrição:

Inicializa as variáveis para montagem do ambiente.


Sintaxe:

SetEnvironment( cEnvironment ) -> Return Nil


Parâmetros:

NomeTipoDescrição

cEmp

character

Indica qual a empresa será inicializadas.

cFil

character

Indica qual a filial será inicializadas.

SetNoErrorStop()


Retorno:

 Não retorna valores explícitos.

Sintaxe:





SetNoErrorStop(

lNoStop

)

→Return INoStop

Descrição:

Especifica se o sistema deve parar em caso de erro.


Sintaxe:

SetNoErrorStop(lNoStop) - >Return INoStop


Parâmetros:

NomeTipoDescrição

lNoStop

Boolean

Indica se o IPC deve parar em caso de erro ".F.

deve parar 

" Ou   ".T.

não deve parar

AddThread()

" Para continuar.


Retorno:

Retorna indica se o sistema para ou continua.

Sintaxe:





AddThread()

->Return

Descrição:

Adiciona threads para fazer a execução

RemoveThread()

.


Sintaxe:

RemoveThread

AddThread(

lAll

) - >Return





RemoveThread()

Descrição:

Remove threads de execução.


Sintaxe:

RemoveThread(lAll) - >Return


Parâmetros:

NomeTipoDescrição
lAllBoolean

Força remover todas as threads de execução

Start()

Sintaxe:

.





Start(

cFunction

)

->Return

Descrição:

Inicializa a execução da fila.


Sintaxe:

Start(cFunction)→Return


Parâmetros:

NomeTipoDescrição
cFunctionCharacter

Função inicia as  threads de execução.

Stop()

Sintaxe:


Retorno:

Não possui retorno explícito.





Stop(

Stop()->Return(lRetorno

)

Descrição:

Para a execução das threads de IPC e a de monitoramento.


Sintaxe:

FWIpcWait():Stop() → lRetorno


Retorno:

lRetorno → Logica, Indica sucesso na parada as threads da FWIpcWait.





HasThreadFree()

Descrição:

Indica se há threads de processamento livres para execução.


Sintaxe:

HasThreadFree()->Return(lRetorno)

Descrição


Retorno:

Indica se há threads de processamento livres para execução

Go()

Sintaxe:

Descrição:

Parâmetros:

GetError()

Retorna .T. se houver threads livres, caso contrário retorna .F.





Go()

Descrição:

Envia uma requisição para uma thread agent, onde será processado uma lista de até 10 parâmetro de acordo com a função informada no método Start.


Sintaxe:

Go( uParm1, uParm2, uParm3, uParm4, uParm5, uParm6, uParm7, uParm8, uParm9, uParm10 )->Return(lRetorno)


Parâmetros:

NomeTipoDescrição
uParm1

Indefinido


uParm2

Indefinido


uParm3

Indefinido


uParm4

Indefinido


uParm5

Indefinido


uParm6

Indefinido


uParm7

Indefinido


uParm8

Indefinido


uParm9

Indefinido


lRetorno

Boolean

Indica que a requisição não foi feita


Retorno:

Retorna .T.  se a requisição foi feita com sucesso, caso não foi retorna .F.





GetError()

Descrição:

Recupera o erro ocorrido em uma das threads de processamento


Sintaxe:

GetError()->Return(::cError)

Descrição


Retorno:

Recupera

Descreve o tipo de erro ocorrido

em uma das threads de processamento

ou vazio caso não houver.





GetMonitorStatus()

Descrição:

Recupera o status do Monitor


Sintaxe:

GetMonitorStatus()

->Return

→Return(PadR(::oSemaphore:DirtyRead(::cMonitorID),THREAD_LENGHT_STATUS))

Descrição


Retorno:

Recupera o status do Monitor

Status atual em formato de sting.





FreeThreads()

Descrição:

Devolve a quantidade de threads de processamento livres para execução


Sintaxe:

FreeThreads()->Return(nRet)

Descrição


Retorno:

Devolve

Retorna a quantidade de threads

de processamento

livres

para execução

SetSemaphoreDriver





StopProcessOnError()

Sintaxe:

Descrição:

Parâmetros:

StopProcessOnError()

Especifica se o IPC deve ou não parar em caso de erro.


Sintaxe:

SetNoErrorStop(lNoStop)->Return lStop


Parâmetros:

NomeTipoDescrição
lNoStopBooleanDefine o comportamento em casos de erros


Retorno:

Especifica se o ipc deve ou não parar em caso de erro

Define o comportamento para continuar retorna .T. e para finalizar retorna .F.






Bloco de código
languagejs
themeMidnight
titleExemplo
#INCLUDE "protheus.ch"
#INCLUDE "parmtype.ch"
#Include "fwipcwait.ch"

  //---------------------------------------------------------------------
/*/{Protheus.doc} IPCTeste
Função para exemplo de uso da classe FWIPCWait

@author  FRAMEWORK
@since   11/09/2024
@version 1.0
/*/
//---------------------------------------------------------------------
User Function IPCTeste()
Local oIPC as object
Local nX as numeric
 
RpcSetEnv("99","01")
 
oIPC := FWIPCWait():New("TESTE",10000)
oIPC:SetThreads(1)
oIPC:SetEnvironment(cEmpAnt,cFilAnt)
oIPC:Start("U_IPCTEST2")

For nX := 1 To 1000
    oIPC:Go(nX)
Next nX

oIPC:Stop()

FreeObj(oIPC)
oIPC := Nil

Return

//---------------------------------------------------------------------
/*/{Protheus.doc} IPCTEST2
Função que será executada nas threads de exemplo da FWIpcWait

@author  FRAMEWORK
@since   11/09/2024
@version 1.0
/*/
//---------------------------------------------------------------------
User Function IPCTEST2(nX as numeric)
 
ConOut("Entrei...", nX, Time())
Sleep(2000)
ConOut("Saindo...", nX, Time())
 
Return


Templatedocumentos

HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>
  •            Métodos:

Índice
maxLevel15
printablefalse