20#ifndef ORES_COMMS_MESSAGING_MESSAGE_TYPES_HPP
21#define ORES_COMMS_MESSAGING_MESSAGE_TYPES_HPP
27#define MAGIC_ENUM_RANGE_MIN 0
28#define MAGIC_ENUM_RANGE_MAX 0x4000
30#include <magic_enum/magic_enum.hpp>
35constexpr std::uint32_t PROTOCOL_MAGIC = 0x4F524553;
84constexpr std::uint16_t PROTOCOL_VERSION_MAJOR = 13;
85constexpr std::uint16_t PROTOCOL_VERSION_MINOR = 0;
88constexpr std::uint16_t CORE_SUBSYSTEM_MIN = 0x0000;
89constexpr std::uint16_t CORE_SUBSYSTEM_MAX = 0x0FFF;
90constexpr std::uint16_t RISK_SUBSYSTEM_MIN = 0x1000;
91constexpr std::uint16_t RISK_SUBSYSTEM_MAX = 0x1FFF;
92constexpr std::uint16_t ACCOUNTS_SUBSYSTEM_MIN = 0x2000;
93constexpr std::uint16_t ACCOUNTS_SUBSYSTEM_MAX = 0x2FFF;
94constexpr std::uint16_t VARIABILITY_SUBSYSTEM_MIN = 0x3000;
95constexpr std::uint16_t VARIABILITY_SUBSYSTEM_MAX = 0x3FFF;
111enum class message_type {
113 handshake_request = 0x0001,
114 handshake_response = 0x0002,
115 handshake_ack = 0x0003,
116 error_response = 0x0004,
121 subscribe_request = 0x0010,
122 subscribe_response = 0x0011,
123 unsubscribe_request = 0x0012,
124 unsubscribe_response = 0x0013,
125 notification = 0x0014,
128 database_status_notification = 0x0020,
131 get_currencies_request = 0x1001,
132 get_currencies_response = 0x1002,
133 save_currency_request = 0x1003,
134 save_currency_response = 0x1004,
135 delete_currency_request = 0x1005,
136 delete_currency_response = 0x1006,
137 get_currency_history_request = 0x1007,
138 get_currency_history_response = 0x1008,
141 create_account_request = 0x2001,
142 create_account_response = 0x2002,
143 list_accounts_request = 0x2003,
144 list_accounts_response = 0x2004,
145 login_request = 0x2005,
146 login_response = 0x2006,
147 unlock_account_request = 0x2007,
148 unlock_account_response = 0x2008,
149 delete_account_request = 0x2009,
150 delete_account_response = 0x200A,
151 list_login_info_request = 0x200B,
152 list_login_info_response = 0x200C,
153 logout_request = 0x200D,
154 logout_response = 0x200E,
155 create_initial_admin_request = 0x200F,
156 create_initial_admin_response = 0x2010,
157 bootstrap_status_request = 0x2011,
158 bootstrap_status_response = 0x2012,
159 lock_account_request = 0x2013,
160 lock_account_response = 0x2014,
161 update_account_request = 0x2015,
162 update_account_response = 0x2016,
163 get_account_history_request = 0x2017,
164 get_account_history_response = 0x2018,
165 reset_password_request = 0x2019,
166 reset_password_response = 0x201A,
167 change_password_request = 0x201B,
168 change_password_response = 0x201C,
169 update_my_email_request = 0x201D,
170 update_my_email_response = 0x201E,
173 list_roles_request = 0x2020,
174 list_roles_response = 0x2021,
175 list_permissions_request = 0x2022,
176 list_permissions_response = 0x2023,
177 assign_role_request = 0x2024,
178 assign_role_response = 0x2025,
179 revoke_role_request = 0x2026,
180 revoke_role_response = 0x2027,
181 get_account_roles_request = 0x2028,
182 get_account_roles_response = 0x2029,
183 get_account_permissions_request = 0x202A,
184 get_account_permissions_response = 0x202B,
187 list_feature_flags_request = 0x3000,
188 list_feature_flags_response = 0x3001,
193enum class error_code {
195 version_mismatch = 0x0001,
196 crc_validation_failed = 0x0002,
197 invalid_message_type = 0x0003,
198 handshake_timeout = 0x0004,
199 handshake_failed = 0x0005,
200 payload_too_large = 0x0006,
201 network_error = 0x0007,
202 handler_error = 0x0008,
203 database_error = 0x0009,
204 authentication_failed = 0x000A,
205 authorization_failed = 0x000B,
206 invalid_request = 0x000C,
207 bootstrap_mode_only = 0x000D,
208 bootstrap_mode_forbidden = 0x000E,
209 weak_password = 0x000F,
210 not_localhost = 0x0010,
211 database_unavailable = 0x0011,
212 decompression_failed = 0x0012,
213 unsupported_compression = 0x0013,
214 compression_failed = 0x0014,
224inline std::ostream& operator<<(std::ostream& os, message_type mt) {
225 return os << magic_enum::enum_name(mt)
226 <<
" (0x" << std::hex << static_cast<std::uint16_t>(mt) << std::dec <<
")";
235inline std::ostream& operator<<(std::ostream& os, error_code ec) {
236 return os << magic_enum::enum_name(ec)
237 <<
" (0x" << std::hex << static_cast<std::uint16_t>(ec) << std::dec <<
")";
244 return os << magic_enum::enum_name(ct)
245 <<
" (0x" << std::hex << static_cast<std::uint8_t>(ct) << std::dec <<
")";
252 return std::string(magic_enum::enum_name(ec));
Contains messaging related infrastructure in the comms library.
Definition compression.hpp:29
std::string to_string(error_code ec)
Convert error_code to string for display.
Definition message_types.hpp:251
compression_type
Compression algorithm used for payload compression.
Definition message_types.hpp:104