DATABASE logix
GLOBALS
DEFINE p_user LIKE usuarios.cod_usuario
DEFINE p_cod_empresa LIKE empresa.cod_empresa
END GLOBALS
#------------------------------------------------------------------------------#
FUNCTION LTHREAD_test()
#------------------------------------------------------------------------------#
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_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 |