-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExceptions.h
82 lines (68 loc) · 1.86 KB
/
Exceptions.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Exceptions.h
// ExchangeFeed
//
//
#ifndef ExchangeFeed_Exceptions_h
#define ExchangeFeed_Exceptions_h
#include <exception>
#include <stdexcept>
#include <string>
namespace feed {
namespace Exception {
enum Errors {
UNKNOWN = 0,
INVALID_INPUT = 1,
INVALID_ACTION,
ILLEGAL_ORDER_ID,
DUPLICATE_ORDER_ID,
INVALID_ORDER_ID_MODIFY,
INVALID_REQUEST_MODIFY,
INVALID_ORDER_ID_REMOVE,
INVALID_REQUEST_REMOVE,
INVALID_PRICE,
INVALID_QUANTITY,
INVALID_SIDE,
};
static const std::string ErrorString []= {
"Unknown ",
"Invalid Input Msg ",
"Invalid Action ",
"(Add) Illegal Order Id ",
"(Add) Duplicate Order Id ",
"(Modify) Invalid Order id ",
"(Modify) Invalid Request ",
"(Remove) Invalid Order id ",
"(Remove) Invalid Request ",
"Invalid Prices ",
"Invalid Quantity ",
"Invalid Side "
};
}
struct FeedException : public std::runtime_error {
explicit FeedException(Exception::Errors code, const std::string& error)
: std::runtime_error(error)
, m_error_code(code) { }
Exception::Errors error_code() const
{
return m_error_code;
}
private:
Exception::Errors m_error_code;
};
struct InvalidOrder : public FeedException {
InvalidOrder(Exception::Errors code, const std::string& error)
: FeedException(code, error)
, m_error_code(code){ }
Exception::Errors error_code() const
{
return m_error_code;
}
private:
Exception::Errors m_error_code;
};
struct InvalidMidQuote : public FeedException {
explicit InvalidMidQuote(const std::string& error = "NAN")
: FeedException(Exception::UNKNOWN, error) { }
};
}
#endif