Files
rippled/include/xrpl/protocol/BuildInfo.h
2026-07-13 10:40:40 +00:00

88 lines
2.3 KiB
C++

#pragma once
#include <cstdint>
#include <string>
#include <string_view>
/**
* Versioning information for this build.
*/
// VFALCO The namespace is deprecated
namespace xrpl::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 xrpld-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(std::string_view versionStr);
/**
* Returns this server's version packed in a 64-bit integer.
*/
std::uint64_t
getEncodedVersion();
/**
* Check if the encoded software version is an xrpld software version.
*
* @param version another node's encoded software version
* @return true if the version is an xrpld software version, false otherwise
*/
bool
isXrpldVersion(std::uint64_t version);
/**
* Check if the version is newer than the local node's xrpld software
* version.
*
* @param version another node's encoded software version
* @return true if the version is newer than the local node's xrpld software
* version, false otherwise.
*
* @note This function only understands version numbers that are generated by
* xrpld. Please see the encodeSoftwareVersion() function for detail.
*/
bool
isNewerVersion(std::uint64_t version);
} // namespace xrpl::BuildInfo