Extend JS Message constructor to copy parameters from a given object.
Fix function that was copying properties to message to not copy objects, null or undefined. git-svn-id: http://yate.null.ro/svn/yate/trunk@6209 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
511a5d36ca
commit
f180ed599d
|
@ -987,7 +987,7 @@ static void copyObjParams(NamedList& dest, const NamedList* src)
|
||||||
unsigned int n = src->length();
|
unsigned int n = src->length();
|
||||||
for (unsigned int i = 0; i < n; i++) {
|
for (unsigned int i = 0; i < n; i++) {
|
||||||
const NamedString* p = src->getParam(i);
|
const NamedString* p = src->getParam(i);
|
||||||
if (p && !p->name().startsWith("__"))
|
if (p && !p->name().startsWith("__") && !p->getObject(YATOM("ExpWrapper")))
|
||||||
dest.setParam(p->name(),*p);
|
dest.setParam(p->name(),*p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2281,17 +2281,24 @@ JsObject* JsMessage::runConstructor(ObjList& stack, const ExpOperation& oper, Ge
|
||||||
switch (extractArgs(stack,oper,context,args)) {
|
switch (extractArgs(stack,oper,context,args)) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
case 3:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ExpOperation* name = static_cast<ExpOperation*>(args[0]);
|
ExpOperation* name = static_cast<ExpOperation*>(args[0]);
|
||||||
ExpOperation* broad = static_cast<ExpOperation*>(args[1]);
|
ExpOperation* broad = static_cast<ExpOperation*>(args[1]);
|
||||||
|
JsObject* objParams = YOBJECT(JsObject,args[2]);
|
||||||
if (!name)
|
if (!name)
|
||||||
return 0;
|
return 0;
|
||||||
if (!ref())
|
if (!ref())
|
||||||
return 0;
|
return 0;
|
||||||
Message* m = new Message(*name,0,broad && broad->valBoolean());
|
Message* m = new Message(*name,0,broad && broad->valBoolean());
|
||||||
|
if (objParams) {
|
||||||
|
copyObjParams(*m,&objParams->params());
|
||||||
|
if (objParams->nativeParams())
|
||||||
|
copyObjParams(*m,objParams->nativeParams());
|
||||||
|
}
|
||||||
JsMessage* obj = new JsMessage(m,mutex(),true);
|
JsMessage* obj = new JsMessage(m,mutex(),true);
|
||||||
obj->params().addParam(new ExpWrapper(this,protoName()));
|
obj->params().addParam(new ExpWrapper(this,protoName()));
|
||||||
return obj;
|
return obj;
|
||||||
|
|
Loading…
Reference in New Issue