// ECOin - Copyright (c) - 2014/2021 - GPLv3 - epsylon@riseup.net (https://03c8.net) #ifndef _ECOINALERT_H_ #define _ECOINALERT_H_ 1 #include #include #include "uint256.h" #include "util.h" class CNode; class CUnsignedAlert { public: int nVersion; int64 nRelayUntil; // when newer nodes stop relaying to newer nodes int64 nExpiration; int nID; int nCancel; std::set setCancel; int nMinVer; // lowest version inclusive int nMaxVer; // highest version inclusive std::set setSubVer; // empty matches all int nPriority; // Actions std::string strComment; std::string strStatusBar; std::string strReserved; IMPLEMENT_SERIALIZE ( READWRITE(this->nVersion); nVersion = this->nVersion; READWRITE(nRelayUntil); READWRITE(nExpiration); READWRITE(nID); READWRITE(nCancel); READWRITE(setCancel); READWRITE(nMinVer); READWRITE(nMaxVer); READWRITE(setSubVer); READWRITE(nPriority); READWRITE(strComment); READWRITE(strStatusBar); READWRITE(strReserved); ) void SetNull(); std::string ToString() const; void print() const; }; class CAlert : public CUnsignedAlert { public: std::vector vchMsg; std::vector vchSig; CAlert() { SetNull(); } IMPLEMENT_SERIALIZE ( READWRITE(vchMsg); READWRITE(vchSig); ) void SetNull(); bool IsNull() const; uint256 GetHash() const; bool IsInEffect() const; bool Cancels(const CAlert& alert) const; bool AppliesTo(int nVersion, std::string strSubVerIn) const; bool AppliesToMe() const; bool RelayTo(CNode* pnode) const; bool CheckSignature() const; bool ProcessAlert(); static CAlert getAlertByHash(const uint256 &hash); }; #endif