Safeheron-SGX-Native-Development-Framework v1.2.0
Loading...
Searching...
No Matches
ssgx_exception_t.h
Go to the documentation of this file.
1#ifndef SAFEHERON_SGX_TRUSTED_EXCEPTION_H_
2#define SAFEHERON_SGX_TRUSTED_EXCEPTION_H_
3
4#define EXCEPTION_BUF_SIZE_FILE_PATH 48
5#define EXCEPTION_BUF_SIZE_FUNC 24
6#define EXCEPTION_BUF_SIZE_MESSAGE 128
7
8#include <cstring>
9#include <stdexcept>
10#include <string>
11
12namespace ssgx {
17namespace exception_t {
18
38class LocatedException : public std::exception {
39 public:
40 explicit LocatedException(const char* file_path, int line_num, const char* func, int internal_code,
41 const char* message) {
43
44 int src_offset = 0;
45 size_t src_len = strlen(file_path);
46 if (src_len >= EXCEPTION_BUF_SIZE_FILE_PATH) {
47 src_offset = src_len - EXCEPTION_BUF_SIZE_FILE_PATH + 1;
48 src_len = EXCEPTION_BUF_SIZE_FILE_PATH - 1;
49 }
50 info_.append(file_path + src_offset, src_len);
51 info_.append(":");
52
53 info_.append(std::to_string(line_num));
54 info_.append(":");
55
56 src_offset = 0;
57 src_len = strlen(func);
58 if (src_len >= EXCEPTION_BUF_SIZE_FUNC) {
59 src_offset = src_len - EXCEPTION_BUF_SIZE_FUNC + 1;
60 src_len = EXCEPTION_BUF_SIZE_FUNC - 1;
61 }
62 info_.append(func + src_offset, src_len);
63 info_.append(":");
64
65 info_.append(std::to_string(internal_code));
66 info_.append(":");
67
68 src_offset = 0;
69 src_len = strlen(message);
70 if (src_len >= EXCEPTION_BUF_SIZE_MESSAGE) {
71 src_offset = src_len - EXCEPTION_BUF_SIZE_MESSAGE + 1;
72 src_len = EXCEPTION_BUF_SIZE_MESSAGE - 1;
73 }
74 info_.append(message + src_offset, src_len);
75 }
76
77 virtual const char* what() const noexcept {
78 return info_.c_str();
79 }
80
81 public:
82 std::string info_;
83};
84
85}; // namespace exception_t
86}; // namespace ssgx
87
88#endif // SAFEHERON_SGX_TRUSTED_EXCEPTION_H_
LocatedException class thrown with extra information such as file_path, func, line_num,...
Definition ssgx_exception_t.h:38
virtual const char * what() const noexcept
Definition ssgx_exception_t.h:77
LocatedException(const char *file_path, int line_num, const char *func, int internal_code, const char *message)
Definition ssgx_exception_t.h:40
std::string info_
Definition ssgx_exception_t.h:82
Definition ssgx_attestation_t.h:6
#define EXCEPTION_BUF_SIZE_FUNC
Definition ssgx_exception_t.h:5
#define EXCEPTION_BUF_SIZE_FILE_PATH
Definition ssgx_exception_t.h:4
#define EXCEPTION_BUF_SIZE_MESSAGE
Definition ssgx_exception_t.h:6