34 void clearLnkStats(
int);
35 void clearQuStats(
int);
36 void cntInLink(
int,
int,
bool);
37 void cntOutLink(
int,
int,
bool);
38 void cntDiscards(
int,
int,
bool);
39 void incQlen(
int,
int,
int);
40 void decQlen(
int,
int,
int);
43 void record(uint64_t);
57 inPkt, outPkt, inByt, outByt,
111 inline int StatsModule::iPktCnt(
int lnk) {
112 unique_lock<mutex> lck(mtx);
113 return (lnk == 0 ? totInPkt :
114 (lnk == -1 ? rtrInPkt :
115 (lnk == -2 ? leafInPkt : lnkCnts[lnk].inPkt)));
118 inline int StatsModule::oPktCnt(
int lnk) {
119 unique_lock<mutex> lck(mtx);
120 return (lnk == 0 ? totOutPkt :
121 (lnk == -1 ? rtrOutPkt :
122 (lnk == -2 ? leafOutPkt : lnkCnts[lnk].outPkt)));
125 inline int StatsModule::iByteCnt(
int lnk) {
126 unique_lock<mutex> lck(mtx);
127 return (lnk == 0 ? totInByte :
128 (lnk == -1 ? rtrInByte :
129 (lnk == -2 ? leafInByte : lnkCnts[lnk].inByte)));
132 inline int StatsModule::oByteCnt(
int lnk) {
133 unique_lock<mutex> lck(mtx);
134 return (lnk == 0 ? totOutByte :
135 (lnk == -1 ? rtrOutByte :
136 (lnk == -2 ? leafOutByte : lnkCnts[lnk].outByte)));
139 inline int StatsModule::discCnt(
int lnk) {
140 unique_lock<mutex> lck(mtx);
141 return lnkCnts[lnk].discards;
144 inline int StatsModule::qDiscCnt(
int qid) {
145 unique_lock<mutex> lck(mtx);
146 return qCnts[qid].discards;
149 inline int StatsModule::getQlen(
int qid) {
150 unique_lock<mutex> lck(mtx);
151 return qCnts[qid].pktLen;
154 inline int StatsModule::getQbytes(
int qid) {
155 unique_lock<mutex> lck(mtx);
156 return qCnts[qid].bytLen;
159 inline int StatsModule::getLinkQlen(
int lnk) {
160 unique_lock<mutex> lck(mtx);
161 return lnkCnts[lnk].numPkt;
164 inline void StatsModule::clearLnkStats(
int lnk) {
165 lnkCnts[lnk].inByte = lnkCnts[lnk].outByte = 0;
166 lnkCnts[lnk].inPkt = lnkCnts[lnk].outPkt = 0;
167 lnkCnts[lnk].numPkt = lnkCnts[lnk].discards = 0;
170 inline void StatsModule::clearQuStats(
int qid) {
171 qCnts[qid].bytLen = qCnts[qid].pktLen = qCnts[qid].discards = 0;
174 inline void StatsModule::cntInLink(
int lnk,
int len,
bool isRtr) {
175 if (1 <= lnk && lnk <= maxLnk) {
176 lnkCnts[lnk].inByte += len; lnkCnts[lnk].inPkt++;
177 totInByte += len; totInPkt++;
178 if (isRtr) { rtrInByte += len; rtrInPkt++; }
179 else { leafInByte += len; leafInPkt++; }
183 inline void StatsModule::cntOutLink(
int lnk,
int len,
bool isRtr) {
184 if (1 <= lnk && lnk <= maxLnk) {
185 lnkCnts[lnk].outByte += len; lnkCnts[lnk].outPkt++;
186 totOutByte += len; totOutPkt++;
187 if (isRtr) { rtrOutByte += len; rtrOutPkt++; }
188 else { leafOutByte += len; leafOutPkt++; }
192 inline void StatsModule::cntDiscards(
int qid,
int lnk,
bool isRtr) {
193 if (1 <= lnk && lnk <= maxLnk) {
195 lnkCnts[lnk].discards++;
196 if (isRtr) rtrDiscards++;
198 if (1 <= qid && qid <= maxQ)
199 qCnts[qid].discards++;
203 inline void StatsModule::incQlen(
int qid,
int lnk,
int len) {
204 if (1 <= lnk && lnk <= maxLnk) lnkCnts[lnk].numPkt++;
205 if (1 <= qid && qid <= maxQ) {
206 qCnts[qid].bytLen += len; qCnts[qid].pktLen++;
210 inline void StatsModule::decQlen(
int qid,
int lnk,
int len) {
211 if (1 <= lnk && lnk <= maxLnk) lnkCnts[lnk].numPkt--;
212 if (1 <= qid && qid <= maxQ) {
213 qCnts[qid].bytLen -= len; qCnts[qid].pktLen--;