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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
/**
* \file jerrno.h
*
* Qpid asynchronous store plugin library
*
* File containing code for class mrg::journal::jerrno (journal error
* codes). See class documentation for details.
*
* \author Kim van der Riet
*/
#ifndef QPID_LEGACYSTORE_JRNL_JERRNO_H
#define QPID_LEGACYSTORE_JRNL_JERRNO_H
namespace mrg
{
namespace journal
{
class jerrno;
}
}
#include <map>
#include <string>
#include <sys/types.h>
namespace mrg
{
namespace journal
{
/**
* \class jerrno
* \brief Class containing static error definitions and static map for error messages.
*/
class jerrno
{
static std::map<u_int32_t, const char*> _err_map; ///< Map of error messages
static std::map<u_int32_t, const char*>::iterator _err_map_itr; ///< Iterator
static bool _initialized; ///< Dummy flag, used to initialise map.
public:
// generic errors
static const u_int32_t JERR__MALLOC; ///< Buffer memory allocation failed
static const u_int32_t JERR__UNDERFLOW; ///< Underflow error
static const u_int32_t JERR__NINIT; ///< Operation on uninitialized class
static const u_int32_t JERR__AIO; ///< AIO failure
static const u_int32_t JERR__FILEIO; ///< File read or write failure
static const u_int32_t JERR__RTCLOCK; ///< Reading real-time clock failed
static const u_int32_t JERR__PTHREAD; ///< pthread failure
static const u_int32_t JERR__TIMEOUT; ///< Timeout waiting for an event
static const u_int32_t JERR__UNEXPRESPONSE; ///< Unexpected response to call or event
static const u_int32_t JERR__RECNFOUND; ///< Record not found
static const u_int32_t JERR__NOTIMPL; ///< Not implemented
// class jcntl
static const u_int32_t JERR_JCNTL_STOPPED; ///< Operation on stopped journal
static const u_int32_t JERR_JCNTL_READONLY; ///< Write operation on read-only journal
static const u_int32_t JERR_JCNTL_AIOCMPLWAIT; ///< Timeout waiting for AIOs to complete
static const u_int32_t JERR_JCNTL_UNKNOWNMAGIC; ///< Found record with unknown magic
static const u_int32_t JERR_JCNTL_NOTRECOVERED; ///< Req' recover() to be called first
static const u_int32_t JERR_JCNTL_RECOVERJFULL; ///< Journal data files full, cannot write
static const u_int32_t JERR_JCNTL_OWIMISMATCH; ///< OWI change found in unexpected location
// class jdir
static const u_int32_t JERR_JDIR_NOTDIR; ///< Exists but is not a directory
static const u_int32_t JERR_JDIR_MKDIR; ///< Directory creation failed
static const u_int32_t JERR_JDIR_OPENDIR; ///< Directory open failed
static const u_int32_t JERR_JDIR_READDIR; ///< Directory read failed
static const u_int32_t JERR_JDIR_CLOSEDIR; ///< Directory close failed
static const u_int32_t JERR_JDIR_RMDIR; ///< Directory delete failed
static const u_int32_t JERR_JDIR_NOSUCHFILE; ///< File does not exist
static const u_int32_t JERR_JDIR_FMOVE; ///< File move failed
static const u_int32_t JERR_JDIR_STAT; ///< File stat failed
static const u_int32_t JERR_JDIR_UNLINK; ///< File delete failed
static const u_int32_t JERR_JDIR_BADFTYPE; ///< Bad or unknown file type (stat mode)
// class fcntl
static const u_int32_t JERR_FCNTL_OPENWR; ///< Unable to open file for write
static const u_int32_t JERR_FCNTL_WRITE; ///< Unable to write to file
static const u_int32_t JERR_FCNTL_CLOSE; ///< File close failed
static const u_int32_t JERR_FCNTL_FILEOFFSOVFL; ///< Increased offset past file size
static const u_int32_t JERR_FCNTL_CMPLOFFSOVFL; ///< Increased cmpl offs past subm offs
static const u_int32_t JERR_FCNTL_RDOFFSOVFL; ///< Increased read offs past write offs
// class lfmgr
static const u_int32_t JERR_LFMGR_BADAEFNUMLIM; ///< Bad auto-expand file number limit
static const u_int32_t JERR_LFMGR_AEFNUMLIMIT; ///< Exceeded auto-expand file number limit
static const u_int32_t JERR_LFMGR_AEDISABLED; ///< Attempted to expand with auto-expand disabled
// class rrfc
static const u_int32_t JERR_RRFC_OPENRD; ///< Unable to open file for read
// class jrec, enq_rec, deq_rec, txn_rec
static const u_int32_t JERR_JREC_BADRECHDR; ///< Invalid data record header
static const u_int32_t JERR_JREC_BADRECTAIL; ///< Invalid data record tail
// class wmgr
static const u_int32_t JERR_WMGR_BADPGSTATE; ///< Page buffer in illegal state.
static const u_int32_t JERR_WMGR_BADDTOKSTATE; ///< Data token in illegal state.
static const u_int32_t JERR_WMGR_ENQDISCONT; ///< Enq. new dtok when previous part compl.
static const u_int32_t JERR_WMGR_DEQDISCONT; ///< Deq. new dtok when previous part compl.
static const u_int32_t JERR_WMGR_DEQRIDNOTENQ; ///< Deq. rid not enqueued
// class rmgr
static const u_int32_t JERR_RMGR_UNKNOWNMAGIC; ///< Found record with unknown magic
static const u_int32_t JERR_RMGR_RIDMISMATCH; ///< RID mismatch between rec and dtok
//static const u_int32_t JERR_RMGR_FIDMISMATCH; ///< FID mismatch between emap and rrfc
static const u_int32_t JERR_RMGR_ENQSTATE; ///< Attempted read when wstate not ENQ
static const u_int32_t JERR_RMGR_BADRECTYPE; ///< Attempted op on incorrect rec type
// class data_tok
static const u_int32_t JERR_DTOK_ILLEGALSTATE; ///< Attempted to change to illegal state
// static const u_int32_t JERR_DTOK_RIDNOTSET; ///< Record ID not set
// class enq_map, txn_map
static const u_int32_t JERR_MAP_DUPLICATE; ///< Attempted to insert using duplicate key
static const u_int32_t JERR_MAP_NOTFOUND; ///< Key not found in map
static const u_int32_t JERR_MAP_LOCKED; ///< rid locked by pending txn
// class jinf
static const u_int32_t JERR_JINF_CVALIDFAIL; ///< Compatibility validation failure
static const u_int32_t JERR_JINF_NOVALUESTR; ///< No value attr found in jinf file
static const u_int32_t JERR_JINF_BADVALUESTR; ///< Bad format for value attr in jinf file
static const u_int32_t JERR_JINF_JDATEMPTY; ///< Journal data files empty
static const u_int32_t JERR_JINF_TOOMANYFILES; ///< Too many journal data files
static const u_int32_t JERR_JINF_INVALIDFHDR; ///< Invalid file header
static const u_int32_t JERR_JINF_STAT; ///< Error while trying to stat a file
static const u_int32_t JERR_JINF_NOTREGFILE; ///< Target file is not a regular file
static const u_int32_t JERR_JINF_BADFILESIZE; ///< File is of incorrect or unexpected size
static const u_int32_t JERR_JINF_OWIBAD; ///< OWI inconsistent (>1 transition in non-ae journal)
static const u_int32_t JERR_JINF_ZEROLENFILE; ///< Journal info file is zero length (empty).
// Negative returns for some functions
static const int32_t AIO_TIMEOUT; ///< Timeout waiting for AIO return
static const int32_t LOCK_TAKEN; ///< Attempted to take lock, but it was taken by another thread
/**
* \brief Method to access error message from known error number.
*/
static const char* err_msg(const u_int32_t err_no) throw ();
private:
/**
* \brief Static function to initialize map.
*/
static bool __init();
};
} // namespace journal
} // namespace mrg
#endif // ifndef QPID_LEGACYSTORE_JRNL_JERRNO_H
|