mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-23 15:10:34 +00:00
88 lines
2.3 KiB
C++
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
|