|Anonymous | Login | Signup for a new account||2019-09-20 06:09 EEST|
|Main | My View | View Issues | Change Log | Roadmap | Docs|
|Viewing Issue Simple Details|
|ID||Category||Severity||Reproducibility||Date Submitted||Last Update|
|0000340||[Yate - Yet Another Telephony Engine] module||feature||N/A||2013-04-19 17:16||2013-04-19 23:55|
|Summary||0000340: JS: shared temporary storage between routing script and handlers to exchange information|
It would be good to have a shared storage within the same call. This would enable it to store data within the JS routing script in the shared storage object and to retrieve this data in a handler and vice versa.
Each call will have it's own storage object, something like a session-object. Exchange of information within the same call but between a handler and the routing script should be done like this:
var retrieve = Session.get("key", "value");
When implementing that, maybe it is also possible to make shared storage available yate-wide like Application.put/get
|Tags||No tags attached.|
I suggest a more flexible way:
myVar = new Engine.shared(message.billid);
This way scripts may decide how many shared objects they want and which key to use to tie them together.
A single shared block already exists via the Engine.shared object which exposes the methods of the static C++ object TelEngine::Engine::sharedVars() - see the Engine::SharedVars class.
So it would work like this:
// first call
myVar = new Engine.shared("identifier");
-> when object with this identifier is not found, then Engine will automatically create and retrieve it
// second call
myVar2 = new Engine.shared("identifier");
-> Engine retrieves the object that was created in first step, no matter if called in same JS script or in a JS handler
// assign a new value to myVar2 just like
myVar2 = "new value";
myVar3 = new Engine.shared("identifer");
// return true:
myVar2 == myVar3
Do you mean like this?
I don't see how it is possible to assign a new value to the shared object, because (as I did above) assigning would overwrite the actual shared object reference. Maybe it is then better to use put and get like this:
Engine.getShared("identifier") // returns null or the value
Engine.putShared("identifer", "value") // stores a new object or updates an existing, so PUT needs to be done before GET normally.
Moreover: There must be a way to dispose objects in shared storage when shared storage is not coupled with a call itself. Otherwise the shared storage would grow and grow...
Tying the shared storage on a call would give the possibility to automatically remove all referenced objects when the call ends.
|2013-04-19 17:16||asymetrixs||New Issue|
|2013-04-19 17:26||paulc||Note Added: 0000526|
|2013-04-19 17:26||paulc||Status||new => feedback|
|2013-04-19 23:55||asymetrixs||Note Added: 0000527|
|Copyright © 2000 - 2008 Mantis Group|