Files
rippled/include/xrpl/protocol/BuildInfo.h
2025-10-23 11:04:30 -04:00

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