@@ -29,6 +29,7 @@ namespace Testnet {
2929#include " ../l2tst1/contract_l1.h"
3030#include " ../l2tst1/contract_l2.h"
3131#include " ../pbft/pbft_dpos.h"
32+ #include " ../pbft/pbft_stat.h"
3233
3334template <uint32_t nMaxLen>
3435void DocAddTextLen (const char * szID, const void * szValue, uint32_t nLen)
@@ -226,6 +227,7 @@ void DocAddPerc(const char* sz, MultiPrecision::Float x, uint32_t nDigsAfterDot
226227 macro(BlackHole, BlackHole::s_SID) \
227228 macro(L2Tst1_L2, L2Tst1_L2::s_SID) \
228229 macro(PBFT_DPOS, PBFT_DPOS::s_SID) \
230+ macro(PBFT_STAT, PBFT_STAT::s_SID) \
229231
230232#define HandleContractsVer (macro ) \
231233 macro (Oracle2, Oracle2::s_pSID) \
@@ -1201,6 +1203,67 @@ void ParserContext::On_PBFT_Commission(uint16_t commission_cpc, bool bIsTbl /* =
12011203 Env::DocAddText (bIsTbl ? " " : " Commission" , szVal);
12021204}
12031205
1206+ void ParserContext::OnState_PBFT_STAT ()
1207+ {
1208+ {
1209+ Env::DocGroup gr2 (" Validators" );
1210+
1211+ DocSetType (" table" );
1212+ Env::DocArray gr3 (" value" );
1213+
1214+ {
1215+ Env::DocArray gr4 (" " );
1216+ DocAddTableHeader (" Validator" );
1217+ DocAddTableHeader (" Status" );
1218+ DocAddTableHeader (" Weight" );
1219+ }
1220+
1221+ Env::Key_T<I_PBFT::State::Validator::Key> vk0, vk1;
1222+ _POD_ (vk0.m_Prefix .m_Cid ) = m_Cid;
1223+ _POD_ (vk1.m_Prefix .m_Cid ) = m_Cid;
1224+ _POD_ (vk0.m_KeyInContract .m_Address ).SetZero ();
1225+ _POD_ (vk1.m_KeyInContract .m_Address ).SetObject (0xff );
1226+
1227+ for (Env::VarReader r (vk0, vk1); ; )
1228+ {
1229+ I_PBFT::State::Validator vp;
1230+ if (!r.MoveNext_T (vk0, vp))
1231+ break ;
1232+
1233+ Env::DocArray gr4 (" " );
1234+
1235+ Env::DocAddBlob_T (" " , vk0.m_KeyInContract .m_Address );
1236+ On_PBFT_Status (" " , vp.m_Status );
1237+
1238+ DocAddAmount (" " , vp.m_Weight );
1239+ }
1240+
1241+ }
1242+ }
1243+
1244+ void ParserContext::OnMethod_PBFT_STAT ()
1245+ {
1246+ switch (m_iMethod)
1247+ {
1248+ case I_PBFT::Method::ValidatorStatusUpdate::s_iMethod:
1249+ OnMethod (" ValidatorStatusUpdate" );
1250+ {
1251+ auto pArg = get_ArgsAs<I_PBFT::Method::ValidatorStatusUpdate>();
1252+ if (pArg)
1253+ {
1254+ GroupArgs gr;
1255+ On_PBFT_ValidatorAddr (pArg->m_Address );
1256+ On_PBFT_Status (" Status" , pArg->m_Status );
1257+ }
1258+ }
1259+ break ;
1260+
1261+ case PBFT_DPOS::Method::AddReward::s_iMethod:
1262+ OnMethod (" AddReward" );
1263+ break ;
1264+ }
1265+ }
1266+
12041267void ParserContext::OnState_VaultAnon ()
12051268{
12061269}
0 commit comments