viernes, 20 de enero de 2012

[Erlang] - Añadir un timer a un gen_server

En un proyecto que estoy desarrollando con Erlang necesito realizar unas comprobaciones periódicamente. El proyecto está basado en Erlang/OTP y para realizar dichas comprobaciones he añadido un gen server que, entre otras cosas, ejecuta un 'timer' periódicamente. En este post voy detallar el proceso que he seguido para añadir un 'timer' periódico a un gen server.

El proceso es muy simple, se envía un mensaje periodicamente al gen server con un mensaje concreto, y en la recepción de dicho mensaje realizamos la tareas necesarias, en este ejemplo mostramos un texto por pantalla.

Para realizar las llamadas periódicas al timer vamos a usar la función timer:send_interval/2.
send_interval(Time, Message) -> {ok, TRef} | {error, Reason}

Esta función se envía a sí misma el mensaje 'Message' repetidamente con un intervalo indicado en milisegundos (Time). Es decir, cada 'Time' milisegundos ejecuta 'Pid ! Message', donde el 'Pid' es el del proceso que lo ejecuta (Pid = self()).

Para leer el mensaje recibido en el gen_server utilizo el módulo handle_info/2.

A continuación se puede ver el código completo del gen server con un 'timer' periódico cada segundo.

No hay comentarios:

Publicar un comentario