- execFn now returns values
- more structure in cortexLocks.js
This commit is contained in:
parent
9153c0896b
commit
a5b83691e6
|
@ -233,14 +233,14 @@ function disconnect(addr) {
|
||||||
}*/
|
}*/
|
||||||
// remove locks
|
// remove locks
|
||||||
// test locks
|
// test locks
|
||||||
for(var i in testLocks) {
|
/*for(var i in testLocks) {
|
||||||
var lock = testLocks[i];
|
var lock = testLocks[i];
|
||||||
if (!lock)
|
if (!lock)
|
||||||
continue;
|
continue;
|
||||||
if (lock.addr == addr) {
|
if (lock.addr == addr) {
|
||||||
lock.locked = false;
|
lock.locked = false;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
// range locks
|
// range locks
|
||||||
//removeNodeRangeLocks(addr);
|
//removeNodeRangeLocks(addr);
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ function loadTest(tname) {
|
||||||
getLock("test", tname);
|
getLock("test", tname);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
function retrieveLock(struct) {
|
function retrieveLock(struct) {
|
||||||
if (struct.type == "test") {
|
if (struct.type == "test") {
|
||||||
return testLocks[struct.name];
|
return testLocks[struct.name];
|
||||||
|
@ -472,7 +472,7 @@ function retrieveLock(struct) {
|
||||||
error("retrieveLock for range got null");
|
error("retrieveLock for range got null");
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
function getLock(type, name, start, end) {
|
function getLock(type, name, start, end) {
|
||||||
var locks = getLockType(type);
|
var locks = getLockType(type);
|
||||||
|
|
12
cortex.js
12
cortex.js
|
@ -256,7 +256,12 @@ function registerFn(fnname, fn, preplace) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finds the chain of functions,
|
||||||
|
* calls the nth
|
||||||
|
* stores its return
|
||||||
|
* calls the nth+1 with the return of the nth as well
|
||||||
|
* returns the results of the mth
|
||||||
|
*/
|
||||||
function execFn(name, args) {
|
function execFn(name, args) {
|
||||||
root = fnreg;
|
root = fnreg;
|
||||||
names = name.split(".");
|
names = name.split(".");
|
||||||
|
@ -266,11 +271,12 @@ function execFn(name, args) {
|
||||||
return false; // ERROR, NO FN
|
return false; // ERROR, NO FN
|
||||||
}
|
}
|
||||||
i=0;
|
i=0;
|
||||||
|
ret = true;
|
||||||
while(root[i]) {
|
while(root[i]) {
|
||||||
root[i](args);
|
ret = root[i](args, ret);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return true;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
* NOTES
|
* NOTES
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* locks -> [ name:[type, locks], ] */
|
||||||
var locks = new Array();
|
var locks = new Array();
|
||||||
var lockTrys = new Array();
|
var lockTrys = new Array();
|
||||||
var myLocks = new Array();
|
var myLocks = new Array();
|
||||||
|
@ -17,6 +18,52 @@ function copyobj(arr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function registerLockFn(ltype, fnName, fn) {
|
||||||
|
registerFn("locks." +ltype+"."+fnName, fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
function execLockFn(family, fnName, args) {
|
||||||
|
ltype = locks[family].type;
|
||||||
|
args["locks"] = locks[family].locks;
|
||||||
|
return execFn("locks."+ltype+"."+fnName, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**** Lock Functions
|
||||||
|
* retriveLock(details) # get lock data strict (lookup?)
|
||||||
|
* removeLocks(owner)
|
||||||
|
* isLocked(details)
|
||||||
|
* getLock(details) # aquire lock (aquire?)
|
||||||
|
* equals(a, b)
|
||||||
|
* lock
|
||||||
|
* release
|
||||||
|
* make?
|
||||||
|
*/
|
||||||
|
|
||||||
|
registerLockFn("basic", "lookup",
|
||||||
|
function (args) {
|
||||||
|
return args["locks"][args["name"]];
|
||||||
|
});
|
||||||
|
|
||||||
|
registerLockFn("range", "lookup",
|
||||||
|
function (args) {
|
||||||
|
/******* vvvvvvvvvv *********/
|
||||||
|
var l = getRangeLock(struct.name, struct.start, struct.end);
|
||||||
|
if (l == null)
|
||||||
|
error("retrieveLock for range got null");
|
||||||
|
return l;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**** Logical Lock using functions
|
||||||
|
* grant(resp, lock
|
||||||
|
* deny(resp, lock
|
||||||
|
* handleLockReq
|
||||||
|
* handleLockResp
|
||||||
|
* lockGranted
|
||||||
|
* checkLocks
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
|
||||||
function sendReqs(addr) {
|
function sendReqs(addr) {
|
||||||
for(ltype in lockTrys) {
|
for(ltype in lockTrys) {
|
||||||
for (i in lockTrys[ltype]) {
|
for (i in lockTrys[ltype]) {
|
||||||
|
@ -95,5 +142,14 @@ function removeNodeLocks(addr) {
|
||||||
|
|
||||||
addMsgHandler("deadNode",
|
addMsgHandler("deadNode",
|
||||||
function (resp) {
|
function (resp) {
|
||||||
|
for(var i in testLocks) {
|
||||||
|
var lock = testLocks[i];
|
||||||
|
if (!lock)
|
||||||
|
continue;
|
||||||
|
if (lock.addr == addr) {
|
||||||
|
lock.locked = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
removeNodeLocks(resp['addr']);
|
removeNodeLocks(resp['addr']);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue