- 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
|
||||
// test locks
|
||||
for(var i in testLocks) {
|
||||
/*for(var i in testLocks) {
|
||||
var lock = testLocks[i];
|
||||
if (!lock)
|
||||
continue;
|
||||
if (lock.addr == addr) {
|
||||
lock.locked = false;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
// range locks
|
||||
//removeNodeRangeLocks(addr);
|
||||
|
||||
|
@ -462,7 +462,7 @@ function loadTest(tname) {
|
|||
getLock("test", tname);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
function retrieveLock(struct) {
|
||||
if (struct.type == "test") {
|
||||
return testLocks[struct.name];
|
||||
|
@ -472,7 +472,7 @@ function retrieveLock(struct) {
|
|||
error("retrieveLock for range got null");
|
||||
return l;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
function getLock(type, name, start, end) {
|
||||
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) {
|
||||
root = fnreg;
|
||||
names = name.split(".");
|
||||
|
@ -266,11 +271,12 @@ function execFn(name, args) {
|
|||
return false; // ERROR, NO FN
|
||||
}
|
||||
i=0;
|
||||
ret = true;
|
||||
while(root[i]) {
|
||||
root[i](args);
|
||||
ret = root[i](args, ret);
|
||||
i++;
|
||||
}
|
||||
return true;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
* NOTES
|
||||
*/
|
||||
|
||||
/* locks -> [ name:[type, locks], ] */
|
||||
var locks = new Array();
|
||||
var lockTrys = 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) {
|
||||
for(ltype in lockTrys) {
|
||||
for (i in lockTrys[ltype]) {
|
||||
|
@ -95,5 +142,14 @@ function removeNodeLocks(addr) {
|
|||
|
||||
addMsgHandler("deadNode",
|
||||
function (resp) {
|
||||
for(var i in testLocks) {
|
||||
var lock = testLocks[i];
|
||||
if (!lock)
|
||||
continue;
|
||||
if (lock.addr == addr) {
|
||||
lock.locked = false;
|
||||
}
|
||||
}
|
||||
|
||||
removeNodeLocks(resp['addr']);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue