Build JS Message objects with properly set prototypes.

git-svn-id: http://yate.null.ro/svn/yate/trunk@6214 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
oana 2017-05-08 09:03:05 +00:00
parent d8f8bdd5d6
commit 23b9e4a09c
1 changed files with 10 additions and 6 deletions

View File

@ -297,12 +297,6 @@ public:
m_message(0), m_owned(false), m_trackPrio(true)
{
XDebug(&__plugin,DebugAll,"JsMessage::JsMessage() [%p]",this);
}
inline JsMessage(Message* message, Mutex* mtx, bool owned)
: JsObject("Message",mtx),
m_message(message), m_owned(owned), m_trackPrio(true)
{
XDebug(&__plugin,DebugAll,"JsMessage::JsMessage(%p) [%p]",message,this);
params().addParam(new ExpFunction("enqueue"));
params().addParam(new ExpFunction("dispatch"));
params().addParam(new ExpFunction("name"));
@ -316,6 +310,12 @@ public:
params().addParam(new ExpFunction("getRow"));
params().addParam(new ExpFunction("getResult"));
}
inline JsMessage(Message* message, Mutex* mtx, bool owned)
: JsObject(mtx,"[object Message]"),
m_message(message), m_owned(owned), m_trackPrio(true)
{
XDebug(&__plugin,DebugAll,"JsMessage::JsMessage(%p) [%p]",message,this);
}
virtual ~JsMessage()
{
XDebug(&__plugin,DebugAll,"JsMessage::~JsMessage() [%p]",this);
@ -2347,6 +2347,7 @@ bool JsHandler::receivedInternal(Message& msg)
return false;
}
JsMessage* jm = new JsMessage(&msg,runner->context()->mutex(),false);
jm->setPrototype(runner->context(),YSTRING("Message"));
jm->ref();
String name = m_function.name();
safeNowInternal(); // Staring from here the handler may be safely uninstalled
@ -2385,6 +2386,7 @@ void JsMessageQueue::received(Message& msg)
if (!runner)
return;
JsMessage* jm = new JsMessage(&msg,runner->context()->mutex(),false);
jm->setPrototype(runner->context(),YSTRING("Message"));
jm->ref();
ObjList args;
args.append(new ExpWrapper(jm,"message"));
@ -4233,6 +4235,7 @@ bool JsAssist::init()
return false;
}
if (jsm && jsm->ref()) {
jsm->setPrototype(ctx,YSTRING("Message"));
JsObject* cc = JsObject::buildCallContext(ctx->mutex(),jsm);
jsm->ref();
cc->params().setParam(new ExpWrapper(jsm,"message"));
@ -4372,6 +4375,7 @@ bool JsAssist::runFunction(const String& name, Message& msg, bool* handled)
return false;
JsMessage* jm = new JsMessage(&msg,runner->context()->mutex(),false);
jm->setPrototype(runner->context(),YSTRING("Message"));
jm->ref();
ObjList args;
args.append(new ExpWrapper(jm,"message"));