1.0.3 • Published 8 years ago

lenze v1.0.3

Weekly downloads
2
License
ISC
Repository
github
Last release
8 years ago

lenze

cross instance state replication with function invoking

Usage

In thread 1:

var Lenze = require('lenze');

var lenze = Lenze(sourceStateObject, {

    // Optional, defaults to 30
    // How often to poll when there have been recent changes
    minInterval: 30,

    // Optional, defaults to 300
    // How often to poll when there have not been recent changes
    maxInterval: 300,

    // Optional, defaults to 1000
    // How long to poll at minInterval before returning to maxInterval
    dozeInterval: 300,

    // How to send updates
    send: function(data){
        self.postMessage(data);
    },

    // How to receive invocations/connects
    receive: function(callback){
        self.addEventListener('message', function(message){
            callback(message.data);
        });
    }
});

state.x = 10;

state.doSomething = function(x){
    console.log(x);
};

In main thread:

var Lenze = require('../../');

var worker = new Worker("thread1.js");

var lenze = Lenze.replicant(targetStateObject, {

    // How to recieve updates/state
    receive: function(callback){
        worker.addEventListener('message', function(message){
            callback(message.data);
        });
    },

    // How to send invocations/connects
    send: function(data){
        worker.postMessage(data);
    }
});

// Called when the replicant gets state/change for the first time.
lenze.on('ready', function(){

    // This will cause 'dooby' to be logged in the first thread.
    lenze.state.doSomething('dooby');

});

// Called when any state changes within the lenze. (probably often);
lenze.on('change', function(){

    console.log(lenze.state);

});

Notes

  • Instance references (objects/function) are maintained.

    This is a very experimental. The code is very messy and not optimised. There are many TODOs floating around my head.