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 {
53
54 evmc_bytes32 a{}; // first bytes32 (or zero)
55 };
56
57}
58
59namespace dcn::parse
60{
61 template<>
62 Result<pt::PTDeployError> decodeBytes(const std::vector<uint8_t> & bytes);
63
64 template<>
65 Result<pt::PTExecuteError> decodeBytes(const std::vector<uint8_t> & bytes);
66}
67
68template <>
69struct std::formatter<dcn::pt::PTDeployError::Kind> : std::formatter<std::string> {
70 auto format(const dcn::pt::PTDeployError::Kind & err, format_context& ctx) const {
71 switch(err)
72 {
73 case dcn::pt::PTDeployError::Kind::INVALID_INPUT : return formatter<string>::format("Invalid input", ctx);
74
75 case dcn::pt::PTDeployError::Kind::CONNECTOR_ALREADY_REGISTERED : return formatter<string>::format("Connector already registered", ctx);
76 case dcn::pt::PTDeployError::Kind::CONNECTOR_MISSING : return formatter<string>::format("Connector missing", ctx);
77 case dcn::pt::PTDeployError::Kind::CONNECTOR_DIMENSIONS_MISMATCH : return formatter<string>::format("Connector dimensions mismatch", ctx);
78
79 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_ALREADY_REGISTERED : return formatter<string>::format("Transformation already registered", ctx);
80 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_ARGUMENTS_MISMATCH : return formatter<string>::format("Transformation arguments mismatch", ctx);
81 case dcn::pt::PTDeployError::Kind::TRANSFORMATION_MISSING : return formatter<string>::format("Transformation missing", ctx);
82
83 case dcn::pt::PTDeployError::Kind::CONDITION_ALREADY_REGISTERED : return formatter<string>::format("Condition already registered", ctx);
84 case dcn::pt::PTDeployError::Kind::CONDITION_ARGUMENTS_MISMATCH : return formatter<string>::format("Condition arguments mismatch", ctx);
85 case dcn::pt::PTDeployError::Kind::CONDITION_MISSING : return formatter<string>::format("Condition missing", ctx);
86 case dcn::pt::PTDeployError::Kind::REGISTRY_ERROR : return formatter<string>::format("Registry error", ctx);
87
88 default: return formatter<string>::format("Unknown", ctx);
89 }
90 return formatter<string>::format("", ctx);
91 }
92};
93
94template <>
95struct std::formatter<dcn::pt::PTExecuteError::Kind> : std::formatter<std::string> {
96 auto format(const dcn::pt::PTExecuteError::Kind & err, format_context& ctx) const {
97 switch(err)
98 {
99 case dcn::pt::PTExecuteError::Kind::CONDITION_NOT_MET : return formatter<string>::format("Condition not met", ctx);
100 case dcn::pt::PTExecuteError::Kind::RUNNING_INSTANCE_DUPLICATE : return formatter<string>::format("Running instance duplicate", ctx);
101 case dcn::pt::PTExecuteError::Kind::RUNNING_INSTANCE_NOT_SORTED : return formatter<string>::format("Running instance not sorted", ctx);
102 case dcn::pt::PTExecuteError::Kind::RUNNING_INSTANCE_STATIC_OVERRIDE : return formatter<string>::format("Running instance static override", ctx);
103
104 default: return formatter<string>::format("Unknown", ctx);
105 }
106 return formatter<string>::format("", ctx);
107 }
108};
Definition hex.hpp:28
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:35
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:54
enum dcn::pt::PTExecuteError::Kind kind
auto format(const dcn::pt::PTDeployError::Kind &err, format_context &ctx) const
Definition error.hpp:70
auto format(const dcn::pt::PTExecuteError::Kind &err, format_context &ctx) const
Definition error.hpp:96