Remove print() methods: all unused
[novacoin.git] / src / alert.h
1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2012 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6 #ifndef _BITCOINALERT_H_
7 #define _BITCOINALERT_H_ 1
8
9 #include <set>
10 #include <string>
11
12 #include "uint256.h"
13 #include "util.h"
14
15 class CNode;
16
17 /** Alerts are for notifying old versions if they become too obsolete and
18  * need to upgrade.  The message is displayed in the status bar.
19  * Alert messages are broadcast as a vector of signed data.  Unserializing may
20  * not read the entire buffer if the alert is for a newer version, but older
21  * versions can still relay the original data.
22  */
23 class CUnsignedAlert
24 {
25 public:
26     int nVersion;
27     int64_t nRelayUntil;      // when newer nodes stop relaying to newer nodes
28     int64_t nExpiration;
29     int nID;
30     int nCancel;
31     std::set<int> setCancel;
32     int nMinVer;            // lowest version inclusive
33     int nMaxVer;            // highest version inclusive
34     std::set<std::string> setSubVer;  // empty matches all
35     int nPriority;
36
37     // Actions
38     std::string strComment;
39     std::string strStatusBar;
40     std::string strReserved;
41
42     IMPLEMENT_SERIALIZE
43     (
44         READWRITE(this->nVersion);
45         nVersion = this->nVersion;
46         READWRITE(nRelayUntil);
47         READWRITE(nExpiration);
48         READWRITE(nID);
49         READWRITE(nCancel);
50         READWRITE(setCancel);
51         READWRITE(nMinVer);
52         READWRITE(nMaxVer);
53         READWRITE(setSubVer);
54         READWRITE(nPriority);
55
56         READWRITE(strComment);
57         READWRITE(strStatusBar);
58         READWRITE(strReserved);
59     )
60
61     void SetNull();
62
63     std::string ToString() const;
64 };
65
66 /** An alert is a combination of a serialized CUnsignedAlert and a signature. */
67 class CAlert : public CUnsignedAlert
68 {
69 public:
70     std::vector<unsigned char> vchMsg;
71     std::vector<unsigned char> vchSig;
72
73     CAlert()
74     {
75         SetNull();
76     }
77
78     IMPLEMENT_SERIALIZE
79     (
80         READWRITE(vchMsg);
81         READWRITE(vchSig);
82     )
83
84     void SetNull();
85     bool IsNull() const;
86     uint256 GetHash() const;
87     bool IsInEffect() const;
88     bool Cancels(const CAlert& alert) const;
89     bool AppliesTo(int nVersion, std::string strSubVerIn) const;
90     bool AppliesToMe() const;
91     bool RelayTo(CNode* pnode) const;
92     bool CheckSignature() const;
93     bool ProcessAlert();
94
95     /*
96      * Get copy of (active) alert object by hash. Returns a null alert if it is not found.
97      */
98     static CAlert getAlertByHash(const uint256 &hash);
99 };
100
101 #endif