Servicio de reloj vectorial de tamaño n para una arquitectura mom (message-oriented middleware).
De utilidad en sincronizacion de procesos distribuidos, para obtener el orden de cualquier par arbitrario de sucesos.
Aqui https://github.com/poximan/mama_node hay caso de estudio completo que implementa este modulo.
En propiedades.json debe especificarse cuantos procesos del sistema necesitaran una instancia de reloj.
param 1 = indice del que es responsable el reloj vectorial.
var reloj_vectorial = require("mom-reloj-vect")(param 1);
Se requiere el servicio de reloj vectorial. El proceso consumidor pide por parametros que se reserve una posicion del arreglo vector. El modulo de reloj vectorial reservara esa posicion para el que la solicite. En caso de conflicto de posiciones, el Reloj notificara con "Reloj vectorial: otro proceso modifico mi reloj".
reloj_vectorial.incrementar();
Ante un evento que requiera el incremento del valor del reloj, se usara esta funcion. El indice a incrementar es conocido de antemano (durante require).
reloj_vectorial.vector();
Devuelve el reloj vectorial completo para operaciones de visualizacion a terceros.
reloj_vectorial.indice();
Devuelve el indice reservado para el proceso solicitante.
reloj_vectorial.actualizarVector(nuevo_vector);
- Sobreescribe con nuevo_vector si posicion != posicion reservada a proceso solicitante.
- No sobreescribe el vector si posicion == posicion reservada a proceso solicitante. Si nuevo_vector tiene un valor mayor devuelve falla, pero no interrumpe el proceso.