MCPcopy Create free account
hub / github.com/amule-project/amule / GetStatsGraphs

Function GetStatsGraphs

src/ExternalConn.cpp:1668–1724  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1666}
1667
1668static CECPacket *GetStatsGraphs(const CECPacket *request)
1669{
1670 CECPacket *response = NULL;
1671
1672 switch (request->GetDetailLevel()) {
1673 case EC_DETAIL_WEB:
1674 case EC_DETAIL_FULL: {
1675 double dTimestamp = 0.0;
1676 if (request->GetTagByName(EC_TAG_STATSGRAPH_LAST) != NULL) {
1677 dTimestamp = request->GetTagByName(EC_TAG_STATSGRAPH_LAST)->GetDoubleData();
1678 }
1679 uint16 nScale = request->GetTagByNameSafe(EC_TAG_STATSGRAPH_SCALE)->GetInt();
1680 uint16 nMaxPoints = request->GetTagByNameSafe(EC_TAG_STATSGRAPH_WIDTH)->GetInt();
1681 uint32 *graphData = NULL;
1682 uint32 *connData = NULL;
1683 uint64 sessionDl = 0, sessionUl = 0, sessionKad = 0;
1684 double sessionTimespan = 0.0;
1685 unsigned int numPoints = theApp->m_statistics->GetHistoryForGui(
1686 nMaxPoints, (double)nScale, &dTimestamp, &graphData, &connData,
1687 sessionDl, sessionUl, sessionKad, sessionTimespan);
1688 if (numPoints) {
1689 response = new CECPacket(EC_OP_STATSGRAPHS);
1690 response->AddTag(CECTag(EC_TAG_STATSGRAPH_DATA, 4 * numPoints * sizeof(uint32), graphData));
1691 // Per-point active uploads / active downloads. Older
1692 // amulegui builds simply ignore the unknown tag.
1693 response->AddTag(CECTag(EC_TAG_STATSGRAPH_DATA_CONN, 2 * numPoints * sizeof(uint32), connData));
1694 delete [] graphData;
1695 delete [] connData;
1696 // Latest session totals — let amulegui compute the same
1697 // kBytesReceived / sTimestamp session average monolithic
1698 // shows, instead of falling back to a GUI-local integral.
1699 response->AddTag(CECTag(EC_TAG_STATSGRAPH_SESSION_DL, sessionDl));
1700 response->AddTag(CECTag(EC_TAG_STATSGRAPH_SESSION_UL, sessionUl));
1701 response->AddTag(CECTag(EC_TAG_STATSGRAPH_SESSION_KAD, sessionKad));
1702 response->AddTag(CECTag(EC_TAG_STATSGRAPH_SESSION_TIMESPAN, sessionTimespan));
1703 response->AddTag(CECTag(EC_TAG_STATSGRAPH_LAST, dTimestamp));
1704 } else {
1705 response = new CECPacket(EC_OP_FAILED);
1706 response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("No points for graph.")));
1707 }
1708 break;
1709 }
1710 case EC_DETAIL_INC_UPDATE:
1711 case EC_DETAIL_UPDATE:
1712 case EC_DETAIL_CMD:
1713 // No graphs
1714 response = new CECPacket(EC_OP_FAILED);
1715 response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Your client is not configured for this detail level.")));
1716 break;
1717 }
1718 if (!response) {
1719 response = new CECPacket(EC_OP_FAILED);
1720 // Unknown reason
1721 }
1722
1723 return response;
1724}
1725

Callers 1

ProcessRequest2Method · 0.85

Calls 8

GetDetailLevelMethod · 0.80
GetTagByNameMethod · 0.80
GetDoubleDataMethod · 0.80
GetTagByNameSafeMethod · 0.80
GetHistoryForGuiMethod · 0.80
CECTagClass · 0.70
GetIntMethod · 0.45
AddTagMethod · 0.45

Tested by

no test coverage detected