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.



New()

Descrição:

Método construtor da classe.


Sintaxe:

New(cSemaphore, nTimeOut)

- > Return

Descrição:

Método construtor da classe


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.

HasThreadFree


Sintaxe:

FWIpcWait():Stop() → lRetorno

Sintaxe


Retorno:

HasThreadFree()->Return(lRetorno

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





HasThreadFree()

Descrição:

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

Go()


Sintaxe:

Go( uParm1, uParm2, uParm3, uParm4, uParm5, uParm6, uParm7, uParm8, uParm9, uParm10

HasThreadFree()->Return(lRetorno)


Retorno:

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

parametro

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

uParm1


uParm2

Indefinido

uParm1


uParm3

Indefinido

uParm1


uParm4

Indefinido

uParm1


uParm5

Indefinido

uParm1


uParm6

Indefinido

uParm1


uParm7

Indefinido

uParm1


uParm8

Indefinido

uParm1


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





StopProcessOnError()

Descrição:

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


Sintaxe:

SetNoErrorStop(lNoStop)->Return lStop


Parâmetros:

Nome

Descrição:

Especifica se o ipc deve ou
TipoDescrição
lNoStopBooleanDefine o comportamento em casos de erros


Retorno:

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

não parar em caso de erro






Bloco de código
languagejs
themeMidnight
titleExemplo
User Function IPCTeste()

Local oIPC      := Nil
Local nX        := 0

#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("IPCTESTE2U_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 IPCTESTE2(nxIPCTEST2(nX as numeric)
 
ConOut("Entrei...",nx nX, Time())
Sleep(2000)
ConOut("Saindo...",nx 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