Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
error.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <format>
5#include <vector>
6
7#include "chain.hpp"
8#include "parser.hpp"
9#include "crypto.hpp"
10
11
12namespace dcn::pt
13{
15 {
37
38 evmc_bytes32 a{}; // first bytes32 (or zero)
39 uint32_t code{}; // for RegistryError
40 };
41
43 {
44 enum class Kind : std::uint8_t
45 {
46 UNKNOWN = 0,
48
50
51 evmc_bytes32 a{}; // first bytes32 (or zero)
52 };
53
54}
55
56namespace dcn::parse
57{
58 template<>
59 Result<pt::PTDeployError> decodeBytes(const std::vector<uint8_t> & bytes);
60
61 template<>
62 Result<pt::PTExecuteError> decodeBytes(const std::vector<uint8_t> & bytes);
63}
64
65template <>
66struct std::formatter<dcn::pt::PTDeployError::Kind> : std::formatter<std::string> {
67 auto format(const dcn::pt::PTDeployError::Kind & err, format_context& ctx) const {
68 switch(err)
69 {
70 case dcn::pt::PTDeployError::Kind::INVALID_INPUT : return formatter<string>::format("Invalid input", ctx);
71
72 case dcn::pt::PTDeployError::Kind::CONNECTOR_ALREADY_REGISTERED : return formatter<string>::format("Connector already registered", ctx);
73 case dcn::pt::PTDeployError::Kind::CONNECTOR_MISSING : return formatter<string>::format("Connector missing", ctx);
74 case dcn::pt::PTDeployError::Kind::CONNECTOR_DIMENSIONS_MISMATCH : return formatter<string>::format("Connector dimensions mismatch", ctx);
75
76 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_ALREADY_REGISTERED : return formatter<string>::format("Transformation already registered", ctx);
77 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_ARGUMENTS_MISMATCH : return formatter<string>::format("Transformation arguments mismatch", ctx);
78 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_MISSING : return formatter<string>::format("Transformation missing", ctx);
79
80 case dcn::pt::PTDeployError::Kind::CONDITION_ALREADY_REGISTERED : return formatter<string>::format("Condition already registered", ctx);
81 case dcn::pt::PTDeployError::Kind::CONDITION_ARGUMENTS_MISMATCH : return formatter<string>::format("Condition arguments mismatch", ctx);
82 case dcn::pt::PTDeployError::Kind::CONDITION_MISSING : return formatter<string>::format("Condition missing", ctx);
83 case dcn::pt::PTDeployError::Kind::REGISTRY_ERROR : return formatter<string>::format("Registry error", ctx);
84
85 default: return formatter<string>::format("Unknown", ctx);
86 }
87 return formatter<string>::format("", ctx);
88 }
89};
90
91template <>
92struct std::formatter<dcn::pt::PTExecuteError::Kind> : std::formatter<std::string> {
93 auto format(const dcn::pt::PTExecuteError::Kind & err, format_context& ctx) const {
94 switch(err)
95 {
96 case dcn::pt::PTExecuteError::Kind::CONDITION_NOT_MET : return formatter<string>::format("Condition not met", ctx);
97
98 default: return formatter<string>::format("Unknown", ctx);
99 }
100 return formatter<string>::format("", ctx);
101 }
102};
Definition http.hpp:190
std::expected< T, ParseError > Result
Definition parse_error.hpp:26
Result< T > decodeBytes(const std::vector< uint8_t > &bytes)
Definition condition.hpp:33
Definition decentralised_art.hpp:33
Definition error.hpp:15
uint32_t code
Definition error.hpp:39
enum dcn::pt::PTDeployError::Kind kind
Kind
Definition error.hpp:17
evmc_bytes32 a
Definition error.hpp:38
Definition error.hpp:43
Kind
Definition error.hpp:45
evmc_bytes32 a
Definition error.hpp:51
enum dcn::pt::PTExecuteError::Kind kind
auto format(const dcn::pt::PTDeployError::Kind &err, format_context &ctx) const
Definition error.hpp:67
auto format(const dcn::pt::PTExecuteError::Kind &err, format_context &ctx) const
Definition error.hpp:93