summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2023-03-07 17:39:03 -0500
committerNat Goodspeed <nat@lindenlab.com>2023-07-13 12:49:39 -0400
commit3fce3d14d6b8e367f4136efbfe87fcfcb23a4c8e (patch)
tree81f41aa7740e75aa3ff6ee281006f2d3ade455fa
parent25ee39dcbe7277552d8eee1ef5ad5c367f5763f9 (diff)
DRTVWR-558: Avoid extra copy of getMetadata() LLSD map.
(cherry picked from commit 2c1253c8ed2a1648317e6edd768b3fda00c56ce2)
-rw-r--r--indra/llcommon/lleventdispatcher.cpp20
-rw-r--r--indra/llcommon/lleventdispatcher.h2
2 files changed, 9 insertions, 13 deletions
diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp
index 5d18d8f6c4..99e2e74376 100644
--- a/indra/llcommon/lleventdispatcher.cpp
+++ b/indra/llcommon/lleventdispatcher.cpp
@@ -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)
diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h
index db67d1b361..939e3730e1 100644
--- a/indra/llcommon/lleventdispatcher.h
+++ b/indra/llcommon/lleventdispatcher.h
@@ -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