|
a/src/rcldb/rcldb_p.h |
|
b/src/rcldb/rcldb_p.h |
|
... |
|
... |
28 |
MSG = s; \
|
28 |
MSG = s; \
|
29 |
if (MSG.empty()) MSG = "Empty error message"; \
|
29 |
if (MSG.empty()) MSG = "Empty error message"; \
|
30 |
} catch (...) { \
|
30 |
} catch (...) { \
|
31 |
MSG = "Caught unknown xapian exception"; \
|
31 |
MSG = "Caught unknown xapian exception"; \
|
32 |
}
|
32 |
}
|
|
|
33 |
|
|
|
34 |
#define XAPTRY(STMTTOTRY, XAPDB, ERSTR) \
|
|
|
35 |
for (int tries = 0; tries < 2; tries++) { \
|
|
|
36 |
try { \
|
|
|
37 |
STMTTOTRY; \
|
|
|
38 |
ERSTR.erase(); \
|
|
|
39 |
break; \
|
|
|
40 |
} catch (const Xapian::DatabaseModifiedError &e) { \
|
|
|
41 |
ERSTR = e.get_msg(); \
|
|
|
42 |
XAPDB.reopen(); \
|
|
|
43 |
continue; \
|
|
|
44 |
} XCATCHERROR(ERSTR); \
|
|
|
45 |
break; \
|
|
|
46 |
}
|
33 |
|
47 |
|
34 |
class Query;
|
48 |
class Query;
|
35 |
|
49 |
|
36 |
// A class for data and methods that would have to expose
|
50 |
// A class for data and methods that would have to expose
|
37 |
// Xapian-specific stuff if they were in Rcl::Db. There could actually be
|
51 |
// Xapian-specific stuff if they were in Rcl::Db. There could actually be
|