File: exceptions.h

package info (click to toggle)
nixnote2 2.0~beta11-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 9,448 kB
  • ctags: 7,058
  • sloc: cpp: 68,338; java: 1,096; sh: 834; makefile: 27
file content (139 lines) | stat: -rw-r--r-- 5,313 bytes parent folder | download | duplicates (2)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#ifndef QEVERCLOUD_EXCEPTIONS_H
#define QEVERCLOUD_EXCEPTIONS_H

#include <QString>
#include <QObject>
#include <QSharedPointer>
#include "Optional.h"
#include "./generated/EDAMErrorCode.h"
#include "EverCloudException.h"
#include "./generated/types.h"

namespace qevercloud {


/**
 * Errors of the Thrift protocol level. It could be wrongly formatted parameters
 * or return values for example.
 */
class ThriftException : public EverCloudException {
public:

    struct Type {
        enum type {
            UNKNOWN = 0,
            UNKNOWN_METHOD = 1,
            INVALID_MESSAGE_TYPE = 2,
            WRONG_METHOD_NAME = 3,
            BAD_SEQUENCE_ID = 4,
            MISSING_RESULT = 5,
            INTERNAL_ERROR = 6,
            PROTOCOL_ERROR = 7,
            INVALID_DATA = 8
        };
    };

    ThriftException() : EverCloudException(), type_(Type::UNKNOWN) {}
    ThriftException(Type::type type) : EverCloudException(), type_(type) {}
    ThriftException(Type::type type, QString message) : EverCloudException(message), type_(type) {}

    Type::type type() const {
        return type_;
    }

    const char* what() const throw() Q_DECL_OVERRIDE;

    virtual QSharedPointer<EverCloudExceptionData> exceptionData() const Q_DECL_OVERRIDE;

protected:
    Type::type type_;
};

/** Asynchronous API conterpart of ThriftException. See EverCloudExceptionData for more details.*/
class ThriftExceptionData: public EverCloudExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(ThriftExceptionData)
public:
    ThriftException::Type::type type;
    explicit ThriftExceptionData(QString err, ThriftException::Type::type type) : EverCloudExceptionData(err), type(type) {}
    virtual void throwException() const Q_DECL_OVERRIDE {throw ThriftException(type, errorMessage);}
};

inline QSharedPointer<EverCloudExceptionData> ThriftException::exceptionData() const
{
    return QSharedPointer<EverCloudExceptionData>(new ThriftExceptionData(what(), type()));
}

/** Asynchronous API conterpart of EDAMUserException. See EverCloudExceptionData for more details.*/
class EDAMUserExceptionData: public EvernoteExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(EDAMUserExceptionData)
public:
    EDAMErrorCode::type errorCode;
    Optional<QString> parameter;
    explicit EDAMUserExceptionData(QString err, EDAMErrorCode::type errorCode, Optional<QString> parameter) : EvernoteExceptionData(err), errorCode(errorCode), parameter(parameter) {}
    virtual void throwException() const Q_DECL_OVERRIDE;
};

/** Asynchronous API conterpart of EDAMSystemException. See EverCloudExceptionData for more details.*/
class EDAMSystemExceptionData: public EvernoteExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(EDAMSystemExceptionData)
public:
    EDAMErrorCode::type errorCode;
    Optional<QString> message;
    Optional<qint32> rateLimitDuration;
    explicit EDAMSystemExceptionData(QString err, EDAMErrorCode::type errorCode, Optional<QString> message, Optional<qint32> rateLimitDuration) : EvernoteExceptionData(err), errorCode(errorCode), message(message), rateLimitDuration(rateLimitDuration) {}
    virtual void throwException() const Q_DECL_OVERRIDE;
};

/** Asynchronous API conterpart of EDAMNotFoundException. See EverCloudExceptionData for more details.*/
class EDAMNotFoundExceptionData: public EvernoteExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(EDAMNotFoundExceptionData)
public:
    Optional<QString> identifier;
    Optional<QString> key;
    explicit EDAMNotFoundExceptionData(QString err, Optional<QString> identifier, Optional<QString> key) : EvernoteExceptionData(err), identifier(identifier), key(key) {}
    virtual void throwException() const Q_DECL_OVERRIDE;
};

/**
 *  EDAMSystemException for `errorCode = RATE_LIMIT_REACHED`
 */
class EDAMSystemExceptionRateLimitReached: public EDAMSystemException {
public:
    virtual QSharedPointer<EverCloudExceptionData> exceptionData() const Q_DECL_OVERRIDE;
};

/** Asynchronous API conterpart of EDAMSystemExceptionRateLimitReached. See EverCloudExceptionData for more details.*/
class EDAMSystemExceptionRateLimitReachedData: public EDAMSystemExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(EDAMSystemExceptionRateLimitReachedData)
public:
    explicit EDAMSystemExceptionRateLimitReachedData(QString err, EDAMErrorCode::type errorCode, Optional<QString> message, Optional<qint32> rateLimitDuration) : EDAMSystemExceptionData(err, errorCode, message, rateLimitDuration) {}
    virtual void throwException() const Q_DECL_OVERRIDE;
};

/**
 *  EDAMSystemException for `errorCode = AUTH_EXPIRED`
 */
class EDAMSystemExceptionAuthExpired: public EDAMSystemException {
public:
    virtual QSharedPointer<EverCloudExceptionData> exceptionData() const Q_DECL_OVERRIDE;
};

/** Asynchronous API conterpart of EDAMSystemExceptionAuthExpired. See EverCloudExceptionData for more details.*/
class EDAMSystemExceptionAuthExpiredData: public EDAMSystemExceptionData {
    Q_OBJECT
    Q_DISABLE_COPY(EDAMSystemExceptionAuthExpiredData)
public:
    explicit EDAMSystemExceptionAuthExpiredData(QString err, EDAMErrorCode::type errorCode, Optional<QString> message, Optional<qint32> rateLimitDuration) : EDAMSystemExceptionData(err, errorCode, message, rateLimitDuration) {}
    virtual void throwException() const Q_DECL_OVERRIDE;
};



}

#endif // EXCEPTIONS_H