mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
85 lines
2.3 KiB
C++
85 lines
2.3 KiB
C++
#ifndef XRPL_PROTOCOL_BUILDINFO_H_INCLUDED
|
|
#define XRPL_PROTOCOL_BUILDINFO_H_INCLUDED
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
namespace ripple {
|
|
|
|
/** Versioning information for this build. */
|
|
// VFALCO The namespace is deprecated
|
|
namespace BuildInfo {
|
|
|
|
/** Server version.
|
|
Follows the Semantic Versioning Specification:
|
|
http://semver.org/
|
|
*/
|
|
std::string const&
|
|
getVersionString();
|
|
|
|
/** Full server version string.
|
|
This includes the name of the server. It is used in the peer
|
|
protocol hello message and also the headers of some HTTP replies.
|
|
*/
|
|
std::string const&
|
|
getFullVersionString();
|
|
|
|
/** Encode an arbitrary server software version in a 64-bit integer.
|
|
|
|
The general format is:
|
|
|
|
........-........-........-........-........-........-........-........
|
|
XXXXXXXX-XXXXXXXX-YYYYYYYY-YYYYYYYY-YYYYYYYY-YYYYYYYY-YYYYYYYY-YYYYYYYY
|
|
|
|
X: 16 bits identifying the particular implementation
|
|
Y: 48 bits of data specific to the implementation
|
|
|
|
The rippled-specific format (implementation ID is: 0x18 0x3B) is:
|
|
|
|
00011000-00111011-MMMMMMMM-mmmmmmmm-pppppppp-TTNNNNNN-00000000-00000000
|
|
|
|
M: 8-bit major version (0-255)
|
|
m: 8-bit minor version (0-255)
|
|
p: 8-bit patch version (0-255)
|
|
T: 11 if neither an RC nor a beta
|
|
10 if an RC
|
|
01 if a beta
|
|
N: 6-bit rc/beta number (1-63)
|
|
|
|
@param the version string
|
|
@return the encoded version in a 64-bit integer
|
|
*/
|
|
std::uint64_t
|
|
encodeSoftwareVersion(char const* const versionStr);
|
|
|
|
/** Returns this server's version packed in a 64-bit integer. */
|
|
std::uint64_t
|
|
getEncodedVersion();
|
|
|
|
/** Check if the encoded software version is a rippled software version.
|
|
|
|
@param version another node's encoded software version
|
|
@return true if the version is a rippled software version, false otherwise
|
|
*/
|
|
bool
|
|
isRippledVersion(std::uint64_t version);
|
|
|
|
/** Check if the version is newer than the local node's rippled software
|
|
version.
|
|
|
|
@param version another node's encoded software version
|
|
@return true if the version is newer than the local node's rippled software
|
|
version, false otherwise.
|
|
|
|
@note This function only understands version numbers that are generated by
|
|
rippled. Please see the encodeSoftwareVersion() function for detail.
|
|
*/
|
|
bool
|
|
isNewerVersion(std::uint64_t version);
|
|
|
|
} // namespace BuildInfo
|
|
|
|
} // namespace ripple
|
|
|
|
#endif
|