Páginas filhas
  • LGX - LTHREAD

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
titleExemplo LRESTLTHREAD
linenumberstrue
DATABASE logix


GLOBALS
    DEFINE p_user LIKE usuarios.cod_usuario
    DEFINE p_cod_empresa LIKE empresa.cod_empresa
END GLOBALS


#------------------------------------------------------------------------------#
FUNCTION LTHREAD_testetest()
#------------------------------------------------------------------------------#
    DEFINE l_thread_reference VARCHAR(10)

    DEFINE l_status   SMALLINT
    DEFINE l_is_alive SMALLINT
    DEFINE l_message  CHAR(200)


    IF  LOG_initApp("PADRAO") <> 0 THEN
        RETURN
    END IF


    # Cria o componente para requisições REST.
    LET l_thread_reference = _ADVPL_create_component(NULL,"LTHREAD")


    # Define a função que será executada numa nova THREAD.
    CALL _ADVPL_set_property(l_thread_reference,"FUNCTION","LTHREAD_testFunction")


    # Adiciona os parâmetros que serão enviados para a função.
    CALL _ADVPL_set_property(l_thread_reference,"CLEAR_PARAMETERS")
    CALL _ADVPL_set_property(l_thread_reference,"ADD_PARAMETER",p_user CLIPPED)
    CALL _ADVPL_set_property(l_thread_reference,"ADD_PARAMETER",p_cod_empresa CLIPPED)


    # Inicia a execução da função em uma nova THREAD.
    LET l_status = _ADVPL_get_property(l_thread_reference,"START")


    IF  l_status THEN
        # Verifica se a THREAD está em execução.
        LET l_is_alive = _ADVPL_get_property(l_thread_reference,"IS_ALIVE")


        IF  l_is_alive THEN
            CALL log0030_mensagem("Is Alive? Sim!","info")
        ELSE
            CALL log0030_mensagem("Is Alive? Não!","excl")
        END IF


        # Aguarda até o término da THREAD.
        CALL _ADVPL_get_property(l_thread_reference,"JOIN")
        CALL log0030_mensagem("THREAD finalizada","info")
    ELSE
        # Recupera a mensagem de erro.
        LET l_message = _ADVPL_get_property(l_thread_reference,"ERROR_MESSAGE")
        CALL log0030_mensagem(l_message,"stop")
    END IF


    # Ao finalizar o uso, libera o componente da memória.
    CALL _ADVPL_destroy_component(l_rest_reference)thread_reference)
END FUNCTION


#------------------------------------------------------------------------------#
FUNCTION LTHREAD_testFunction(l_cod_usuario,l_cod_empresa)
#------------------------------------------------------------------------------#
    DEFINE l_val_env     CHAR(50)
    DEFINE l_cod_usuario CHAR(08)
    DEFINE l_cod_empresa CHAR(02)


    IF  LOG_initApp("PADRAO") = 0 THEN
        LET l_val_env = LOG_getEnv("IPLOCAL_LGX")
        CALL CONOUT("IPLOCAL_LGX: "||l_val_env CLIPPED)


        LET l_val_env = LOG_getEnv("LTHREAD_CMP")
        CALL CONOUT("LTHREAD_CMP: "||l_val_env CLIPPED)


        CALL CONOUT("USUARIO....: "||l_cod_usuario CLIPPED)
        CALL CONOUT("EMPRESA....: "||l_cod_empresa CLIPPED)


        # Aguarda 5 segundos para que o teste do IS_ALIVE funcione.
        SLEEP 5
    END IF
END FUNCTION