DRTVWR-558: Avoid extra copy of getMetadata() LLSD map.

(cherry picked from commit 2c1253c8ed2a1648317e6edd768b3fda00c56ce2)
master
Nat Goodspeed 2023-03-07 17:39:03 -05:00
parent 25ee39dcbe
commit 3fce3d14d6
2 changed files with 9 additions and 13 deletions

View File

@ -394,10 +394,9 @@ struct LLEventDispatcher::LLSDDispatchEntry: public LLEventDispatcher::DispatchE
return mFunc(event);
}
LLSD addMetadata(LLSD meta) const override
LLSD getMetadata() const override
{
meta["required"] = mRequired;
return meta;
return llsd::map("required", mRequired);
}
};
@ -485,15 +484,14 @@ struct LLEventDispatcher::ArrayParamsDispatchEntry: public LLEventDispatcher::Pa
return ParamsDispatchEntry::call(desc, args, fromMap, argskey);
}
LLSD addMetadata(LLSD meta) const override
LLSD getMetadata() const override
{
LLSD array(LLSD::emptyArray());
// Resize to number of arguments required
if (mArity)
array[mArity - 1] = LLSD();
llassert_always(array.size() == mArity);
meta["required"] = array;
return meta;
return llsd::map("required", array);
}
};
@ -568,11 +566,9 @@ struct LLEventDispatcher::MapParamsDispatchEntry: public LLEventDispatcher::Para
return ParamsDispatchEntry::call(desc, mMapper.map(args), fromMap, argskey);
}
LLSD addMetadata(LLSD meta) const override
LLSD getMetadata() const override
{
meta["required"] = mRequired;
meta["optional"] = mOptional;
return meta;
return llsd::map("required", mRequired, "optional", mOptional);
}
};
@ -733,10 +729,10 @@ LLSD LLEventDispatcher::getMetadata(const std::string& name) const
{
return LLSD();
}
LLSD meta;
LLSD meta{ found->second->getMetadata() };
meta["name"] = name;
meta["desc"] = found->second->mDesc;
return found->second->addMetadata(meta);
return meta;
}
std::ostream& operator<<(std::ostream& out, const LLEventDispatcher& self)

View File

@ -472,7 +472,7 @@ private:
virtual LLSD call(const std::string& desc, const LLSD& event,
bool fromMap, const std::string& argskey) const = 0;
virtual LLSD addMetadata(LLSD) const = 0;
virtual LLSD getMetadata() const = 0;
template <typename... ARGS>
LLSD callFail(ARGS&&... args) const