Bitcoin ABC  0.26.3
P2P Digital Currency
warnings.cpp
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2016 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #include <warnings.h>
7 
8 #include <clientversion.h>
9 #include <sync.h>
10 #include <util/string.h>
11 #include <util/system.h>
12 #include <util/translation.h>
13 
14 #include <vector>
15 
17 static bilingual_str g_misc_warnings GUARDED_BY(g_warnings_mutex);
18 static bool fLargeWorkForkFound GUARDED_BY(g_warnings_mutex) = false;
19 static bool fLargeWorkInvalidChainFound GUARDED_BY(g_warnings_mutex) = false;
20 
21 void SetMiscWarning(const bilingual_str &warning) {
23  g_misc_warnings = warning;
24 }
25 
26 void SetfLargeWorkForkFound(bool flag) {
28  fLargeWorkForkFound = flag;
29 }
30 
33  return fLargeWorkForkFound;
34 }
35 
38  fLargeWorkInvalidChainFound = flag;
39 }
40 
41 bilingual_str GetWarnings(bool verbose) {
42  bilingual_str warnings_concise;
43  std::vector<bilingual_str> warnings_verbose;
44 
46 
47  // Pre-release build warning
48  if (!CLIENT_VERSION_IS_RELEASE) {
49  warnings_concise = _(
50  "This is a pre-release test build - use at your own risk - do not "
51  "use for mining or merchant applications");
52  warnings_verbose.emplace_back(warnings_concise);
53  }
54 
55  // Misc warnings like out of disk space and clock is wrong
56  if (!g_misc_warnings.empty()) {
57  warnings_concise = g_misc_warnings;
58  warnings_verbose.emplace_back(warnings_concise);
59  }
60 
61  if (fLargeWorkForkFound) {
62  warnings_concise = _(
63  "Warning: The network does not appear to fully agree! Some miners "
64  "appear to be experiencing issues.");
65  warnings_verbose.emplace_back(warnings_concise);
66  } else if (fLargeWorkInvalidChainFound) {
67  warnings_concise = _(
68  "Warning: We do not appear to fully agree with our peers! You may "
69  "need to upgrade, or other nodes may need to upgrade.");
70  warnings_verbose.emplace_back(warnings_concise);
71  }
72 
73  if (verbose) {
74  return Join(warnings_verbose, Untranslated("<hr />"));
75  }
76 
77  return warnings_concise;
78 }
Different type to mark Mutex at global scope.
Definition: sync.h:144
auto Join(const std::vector< T > &list, const BaseType &separator, UnaryOp unary_op) -> decltype(unary_op(list.at(0)))
Join a list of items.
Definition: string.h:54
Bilingual messages:
Definition: translation.h:17
#define LOCK(cs)
Definition: sync.h:306
bilingual_str _(const char *psz)
Translation function.
Definition: translation.h:68
bilingual_str Untranslated(std::string original)
Mark a bilingual_str as untranslated.
Definition: translation.h:36
bilingual_str GetWarnings(bool verbose)
Format a string that describes several potential problems detected by the core.
Definition: warnings.cpp:41
void SetfLargeWorkInvalidChainFound(bool flag)
Definition: warnings.cpp:36
static GlobalMutex g_warnings_mutex
Definition: warnings.cpp:16
void SetfLargeWorkForkFound(bool flag)
Definition: warnings.cpp:26
bool GetfLargeWorkForkFound()
Definition: warnings.cpp:31
void SetMiscWarning(const bilingual_str &warning)
Definition: warnings.cpp:21
static bilingual_str g_misc_warnings GUARDED_BY(g_warnings_mutex)