pull/300/head
Jeff Becker 5 years ago
parent e1522faeaa
commit 66753430ad
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -57,15 +57,15 @@ namespace llarp
{
obj.PutInt("timestamp", introset.T);
std::vector< util::StatusObject > introsObjs;
std::vector< util::StatusObject > introsObjs(introset.I.size());
size_t idx = 0;
for(const auto intro : introset.I)
{
util::StatusObject introObj;
auto& introObj = introsObjs[idx++];
introObj.PutString("router", intro.router.ToHex());
introObj.PutInt("expiresAt", intro.expiresAt);
introObj.PutInt("latency", intro.latency);
introObj.PutInt("version", intro.version);
introsObjs.emplace_back(introObj);
}
obj.PutObjectArray("intros", introsObjs);
}

@ -28,12 +28,14 @@ namespace llarp
void
ExtractStatus(util::StatusObject &obj) const override
{
std::vector< util::StatusObject > foundObjs;
for(const auto &found : valuesFound)
std::vector< util::StatusObject > foundObjs(valuesFound.size());
{
util::StatusObject foundObj;
found.ExtractStatus(foundObj);
foundObjs.emplace_back(foundObj);
size_t idx = 0;
for(const auto &found : valuesFound)
{
util::StatusObject &foundObj = foundObjs[idx++];
found.ExtractStatus(foundObj);
}
}
obj.PutObjectArray("found", foundObjs);

@ -75,12 +75,14 @@ namespace llarp
void
ServiceAddressLookup::ExtractStatus(util::StatusObject &obj) const
{
std::vector< util::StatusObject > foundObjs;
for(const auto &found : valuesFound)
std::vector< util::StatusObject > foundObjs(valuesFound.size());
{
util::StatusObject introsetObj;
found.ExtractStatus(introsetObj);
foundObjs.emplace_back(introsetObj);
size_t idx = 0;
for(const auto &found : valuesFound)
{
util::StatusObject &introsetObj = foundObjs[idx++];
found.ExtractStatus(introsetObj);
}
}
obj.PutObjectArray("found", foundObjs);

@ -33,12 +33,14 @@ namespace llarp
void
TagLookup::ExtractStatus(util::StatusObject &obj) const
{
std::vector< util::StatusObject > foundObjs;
for(const auto &found : valuesFound)
std::vector< util::StatusObject > foundObjs(valuesFound.size());
{
util::StatusObject introsetObj;
found.ExtractStatus(introsetObj);
foundObjs.emplace_back(introsetObj);
size_t idx = 0;
for(const auto &found : valuesFound)
{
util::StatusObject &introsetObj = foundObjs[idx++];
found.ExtractStatus(introsetObj);
}
}
obj.PutObjectArray("found", foundObjs);

@ -32,45 +32,49 @@ namespace llarp
void
ExtractStatus(util::StatusObject& obj) const override
{
std::vector< util::StatusObject > txObjs, timeoutsObjs, waitingObjs;
std::vector< util::StatusObject > txObjs(tx.size());
std::vector< util::StatusObject > timeoutsObjs(timeouts.size());
std::vector< util::StatusObject > waitingObjs(waiting.size());
{
auto itr = tx.begin();
auto itr = tx.begin();
size_t idx = 0;
while(itr != tx.end())
{
util::StatusObject txObj, txOwnerObj, txSuperObj;
auto& txSuperObj = txObjs[idx++];
util::StatusObject txObj, txOwnerObj;
itr->second->ExtractStatus(txObj);
txOwnerObj.PutInt("txid", itr->first.txid);
txOwnerObj.PutString("node", itr->first.node.ToHex());
txSuperObj.PutObject("tx", txObj);
txSuperObj.PutObject("owner", txOwnerObj);
txObjs.emplace_back(txSuperObj);
++itr;
}
}
obj.PutObjectArray("tx", txObjs);
{
auto itr = timeouts.begin();
auto itr = timeouts.begin();
size_t idx = 0;
while(itr != timeouts.end())
{
util::StatusObject timeoutObj;
auto& timeoutObj = timeoutsObjs[idx++];
timeoutObj.PutInt("time", itr->second);
timeoutObj.PutString("target", itr->first.ToHex());
timeoutsObjs.emplace_back(timeoutObj);
++itr;
}
}
obj.PutObjectArray("timeouts", timeoutsObjs);
{
auto itr = waiting.begin();
auto itr = waiting.begin();
size_t idx = 0;
while(itr != waiting.end())
{
util::StatusObject waitingObj, txOwnerObj;
auto& waitingObj = waitingObjs[idx++];
util::StatusObject txOwnerObj;
txOwnerObj.PutInt("txid", itr->second.txid);
txOwnerObj.PutString("node", itr->second.node.ToHex());
waitingObj.PutObject("whoasked", txOwnerObj);
waitingObj.PutString("target", itr->first.ToHex());
waitingObjs.emplace_back(waitingObj);
++itr;
}
}

@ -46,14 +46,14 @@ namespace llarp
ExitEndpoint::ExtractStatus(util::StatusObject &obj) const
{
obj.PutBool("permitExit", m_PermitExit);
std::vector< util::StatusObject > activeObjs;
std::vector< util::StatusObject > activeObjs(m_ActiveExits.size());
{
auto itr = m_ActiveExits.begin();
size_t idx = 0;
auto itr = m_ActiveExits.begin();
while(itr != m_ActiveExits.end())
{
util::StatusObject sessionObj;
util::StatusObject &sessionObj = activeObjs[idx++];
itr->second->ExtractStatus(sessionObj);
activeObjs.emplace_back(sessionObj);
++itr;
}
}

@ -438,15 +438,17 @@ namespace llarp
void
Path::ExtractStatus(util::StatusObject& obj) const
{
std::vector< util::StatusObject > subobj;
for(const auto& hop : hops)
std::vector< util::StatusObject > subobj(hops.size());
{
util::StatusObject hopobj;
hopobj.PutString("txid", hop.txID.ToHex());
hopobj.PutString("rxid", hop.rxID.ToHex());
hopobj.PutString("router", hop.rc.pubkey.ToString());
hopobj.PutInt("lifetime", hop.lifetime);
subobj.emplace_back(hopobj);
size_t idx = 0;
for(const auto& hop : hops)
{
util::StatusObject& hopobj = subobj[idx++];
hopobj.PutString("txid", hop.txID.ToHex());
hopobj.PutString("rxid", hop.rxID.ToHex());
hopobj.PutString("router", hop.rc.pubkey.ToString());
hopobj.PutInt("lifetime", hop.lifetime);
}
}
obj.PutObjectArray("hops", subobj);

@ -190,12 +190,17 @@ namespace llarp
obj.PutInt("keygens", keygens.load());
obj.PutInt("numHops", numHops);
obj.PutInt("numPaths", m_NumPaths);
std::vector< util::StatusObject > pathObjs;
ForEachPath([&pathObjs](const Path* p) {
util::StatusObject pobj;
p->ExtractStatus(pobj);
pathObjs.emplace_back(pobj);
});
std::vector< util::StatusObject > pathObjs(m_Paths.size());
{
size_t idx = 0;
auto itr = m_Paths.begin();
while(itr != m_Paths.end())
{
util::StatusObject& pobj = pathObjs[idx++];
itr->second->ExtractStatus(pobj);
++itr;
}
}
obj.PutObjectArray("paths", pathObjs);
}

@ -222,7 +222,6 @@ namespace llarp
}
}
private:
using PathInfo_t = std::pair< RouterID, PathID_t >;
struct PathInfoHash

@ -222,7 +222,10 @@ namespace llarp
{
util::StatusObject dump;
router->ExtractStatus(dump);
resp.AddMember("result", dump.Impl, resp.GetAllocator());
if(!dump.Impl.IsObject())
return false;
resp.AddMember("result", dump.Impl.GetObject(), resp.GetAllocator());
return true;
}

@ -15,12 +15,14 @@ namespace llarp
void
IntroSet::ExtractStatus(util::StatusObject& obj) const
{
std::vector< util::StatusObject > introsObjs;
for(const auto& intro : I)
std::vector< util::StatusObject > introsObjs(I.size());
{
util::StatusObject introObj;
intro.ExtractStatus(introObj);
introsObjs.emplace_back(introObj);
size_t idx = 0;
for(const auto& intro : I)
{
util::StatusObject& introObj = introsObjs[idx++];
intro.ExtractStatus(introObj);
}
}
obj.PutObjectArray("intros", introsObjs);
if(!topic.IsZero())

@ -159,49 +159,51 @@ namespace llarp
if(!m_Tag.IsZero())
obj.PutString("tag", m_Tag.ToString());
std::vector< util::StatusObject > remoteSessions, deadSessions,
snodeSessions, lookups;
std::vector< util::StatusObject > remoteSessions(m_RemoteSessions.size());
std::vector< util::StatusObject > deadSessions(m_DeadSessions.size());
std::vector< util::StatusObject > snodeSessions(m_SNodeSessions.size());
std::vector< util::StatusObject > lookups(m_PendingLookups.size());
{
auto itr = m_RemoteSessions.begin();
size_t idx = 0;
auto itr = m_RemoteSessions.begin();
while(itr != m_RemoteSessions.end())
{
util::StatusObject sobj;
util::StatusObject& sobj = remoteSessions[idx++];
itr->second->ExtractStatus(sobj);
remoteSessions.emplace_back(sobj);
++itr;
}
}
obj.PutObjectArray("remoteSessions", remoteSessions);
{
auto itr = m_DeadSessions.begin();
size_t idx = 0;
auto itr = m_DeadSessions.begin();
while(itr != m_DeadSessions.end())
{
util::StatusObject sobj;
util::StatusObject& sobj = deadSessions[idx++];
itr->second->ExtractStatus(sobj);
deadSessions.emplace_back(sobj);
++itr;
}
}
obj.PutObjectArray("deadSessions", deadSessions);
{
auto itr = m_SNodeSessions.begin();
size_t idx = 0;
auto itr = m_SNodeSessions.begin();
while(itr != m_SNodeSessions.end())
{
util::StatusObject sobj;
util::StatusObject& sobj = snodeSessions[idx++];
itr->second->ExtractStatus(sobj);
snodeSessions.emplace_back(sobj);
++itr;
}
}
obj.PutObjectArray("snodeSessions", snodeSessions);
{
auto itr = m_PendingLookups.begin();
size_t idx = 0;
auto itr = m_PendingLookups.begin();
while(itr != m_PendingLookups.end())
{
util::StatusObject sobj;
util::StatusObject& sobj = lookups[idx++];
itr->second->ExtractStatus(sobj);
lookups.emplace_back(sobj);
++itr;
}
}

@ -11,28 +11,20 @@ namespace llarp
#endif
}
StatusObject::StatusObject(const StatusObject& other)
{
#ifdef USE_ABYSS
Impl.SetObject();
Impl.CopyFrom(other.Impl, Impl.GetAllocator());
#else
(void)other;
#endif
}
StatusObject::~StatusObject()
{
Impl.RemoveAllMembers();
}
void
StatusObject::PutBool(const char* name, bool val)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetBool(val);
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;
@ -43,10 +35,11 @@ namespace llarp
StatusObject::PutInt(const char* name, uint64_t val)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetInt(val);
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
v.SetUint64(val);
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;
@ -54,14 +47,15 @@ namespace llarp
}
void
StatusObject::PutObject(const char* name, const StatusObject& val)
StatusObject::PutObject(const char* name, StatusObject& val)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetObject();
v.CopyFrom(val.Impl, Impl.GetAllocator());
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
v.CopyFrom(val.Impl, a);
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;
@ -70,44 +64,44 @@ namespace llarp
void
StatusObject::PutObjectArray(const char* name,
const std::vector< StatusObject >& arr)
std::vector< StatusObject >& arr)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetArray();
Value_t i;
for(const auto& obj : arr)
{
Value_t i;
i.SetObject();
i.CopyFrom(obj.Impl, Impl.GetAllocator());
v.PushBack(i, Impl.GetAllocator());
v.PushBack(i.SetObject().CopyFrom(obj.Impl, a), a);
}
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;
(void)arr;
#endif
}
void
StatusObject::PutStringArray(const char* name,
const std::vector< std::string >& arr)
std::vector< std::string >& arr)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetArray();
for(const auto& str : arr)
Value_t i;
for(auto& str : arr)
{
Value_t i;
i.SetString(str.c_str(), Impl.GetAllocator());
v.PushBack(i, Impl.GetAllocator());
v.PushBack(i.SetString(str.c_str(), a), a);
}
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;
(void)arr;
#endif
}
@ -115,10 +109,11 @@ namespace llarp
StatusObject::PutString(const char* name, const std::string& val)
{
#ifdef USE_ABYSS
auto& a = Impl.GetAllocator();
Value_t v;
v.SetString(val.c_str(), Impl.GetAllocator());
Value_t k(name, Impl.GetAllocator());
Impl.AddMember(k, v, Impl.GetAllocator());
v.SetString(val.c_str(), a);
Value_t k(name, a);
Impl.AddMember(k, v, a);
#else
(void)name;
(void)val;

@ -16,6 +16,9 @@ namespace llarp
struct StatusObject_Impl
{
};
struct Value_t
{
}
#endif
struct StatusObject
@ -23,9 +26,6 @@ namespace llarp
StatusObject();
~StatusObject();
StatusObject(StatusObject&&) = delete;
StatusObject(const StatusObject& other);
void
PutInt(const char* name, uint64_t val);
@ -36,13 +36,13 @@ namespace llarp
PutBool(const char* name, bool val);
void
PutObject(const char* name, const StatusObject& obj);
PutObject(const char* name, StatusObject& obj);
void
PutStringArray(const char* name, const std::vector< std::string >& arr);
PutStringArray(const char* name, std::vector< std::string >& arr);
void
PutObjectArray(const char* name, const std::vector< StatusObject >& arr);
PutObjectArray(const char* name, std::vector< StatusObject >& arr);
StatusObject_Impl Impl;
};

Loading…
Cancel
Save