A container for a 64 bit unsigned value representing many things on discord. This value is known in distributed computing as a snowflake value.
More...
|
| constexpr | snowflake () noexcept=default |
| | Construct a snowflake object. More...
|
| |
| constexpr | snowflake (const snowflake &rhs) noexcept=default |
| | Copy a snowflake object. More...
|
| |
| template<typename T , typename = std::enable_if_t<std::is_same_v<T, std::string>>> |
| | snowflake (const T &string_value) noexcept |
| | Construct a snowflake object from an unsigned integer in a string. More...
|
| |
| constexpr | snowflake (snowflake &&rhs) noexcept=default |
| | Move a snowflake object. More...
|
| |
| | snowflake (std::string_view string_value) noexcept |
| | Construct a snowflake object from an unsigned integer in a string. More...
|
| |
| template<typename T , typename = std::enable_if_t<std::is_integral_v<T> && !std::is_same_v<T, bool>>> |
| constexpr | snowflake (T snowflake_val) noexcept(std::is_unsigned_v< T >) |
| | Construct a snowflake from an integer value. More...
|
| |
| constexpr bool | empty () const noexcept |
| | Returns true if the snowflake holds an empty value (is 0) More...
|
| |
| constexpr double | get_creation_time () const noexcept |
| | Get the creation time of this snowflake according to Discord. More...
|
| |
| constexpr uint16_t | get_increment () const noexcept |
| | Get the increment, which is incremented for every snowflake created over the one millisecond resolution in the timestamp. More...
|
| |
| constexpr uint8_t | get_process_id () const noexcept |
| | Get the process id that produced this snowflake value. More...
|
| |
| constexpr uint8_t | get_worker_id () const noexcept |
| | Get the worker id that produced this snowflake value. More...
|
| |
| | operator json () const |
| | For building json. More...
|
| |
| constexpr | operator uint64_t () const noexcept |
| | For acting like an integer. More...
|
| |
| constexpr | operator uint64_t & () noexcept |
| | For acting like an integer. More...
|
| |
| constexpr dpp::snowflake & | operator= (const dpp::snowflake &rhs) noexcept=default |
| | Copy value from another snowflake. More...
|
| |
| constexpr dpp::snowflake & | operator= (dpp::snowflake &&rhs) noexcept=default |
| | Move value from another snowflake. More...
|
| |
| template<typename T , typename = std::enable_if_t<std::is_convertible_v<T, std::string_view>>> |
| constexpr dpp::snowflake & | operator= (T &&snowflake_val) noexcept |
| | Assign value converted from a string to the snowflake. More...
|
| |
| template<typename T , typename = std::enable_if_t<std::is_integral_v<T>>> |
| constexpr dpp::snowflake & | operator= (T snowflake_val) noexcept(std::is_unsigned_v< T >) |
| | Assign integer value to the snowflake. More...
|
| |
| constexpr bool | operator== (dpp::snowflake snowflake_val) const noexcept |
| | Comparison operator with another snowflake. More...
|
| |
| bool | operator== (std::string_view snowflake_val) const noexcept |
| | Comparison operator with a string. More...
|
| |
| template<typename T , typename = std::enable_if_t<std::is_integral_v<T>>> |
| constexpr bool | operator== (T snowflake_val) const noexcept |
| | Comparison operator with an integer. More...
|
| |
| std::string | str () const |
| | Returns the stringified version of the snowflake value. More...
|
| |
A container for a 64 bit unsigned value representing many things on discord. This value is known in distributed computing as a snowflake value.
Snowflakes are:
- Performant (very fast to generate at source and to compare in code)
- Uncoordinated (allowing high availability across clusters, data centres etc)
- Time ordered (newer snowflakes have higher IDs)
- Directly Sortable (due to time ordering)
- Compact (64 bit numbers, not 128 bit, or string)
An identical format of snowflake is used by Twitter, Instagram and several other platforms.
- See also
- https://en.wikipedia.org/wiki/Snowflake_ID
-
https://github.com/twitter-archive/snowflake/tree/b3f6a3c6ca8e1b6847baa6ff42bf72201e2c2231