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
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1997-2002
* Sleepycat Software. All rights reserved.
*
* $Id: cxx_except.h,v 1.1.1.1 2003/11/20 22:13:16 toshok Exp $
*/
#ifndef _CXX_EXCEPT_H_
#define _CXX_EXCEPT_H_
#include "cxx_common.h"
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//
// Forward declarations
//
class DbDeadlockException; // forward
class DbException; // forward
class DbLockNotGrantedException; // forward
class DbLock; // forward
class DbMemoryException; // forward
class DbRunRecoveryException; // forward
class Dbt; // forward
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//
// Exception classes
//
// Almost any error in the DB library throws a DbException.
// Every exception should be considered an abnormality
// (e.g. bug, misuse of DB, file system error).
//
// NOTE: We would like to inherit from class exception and
// let it handle what(), but there are
// MSVC++ problems when <exception> is included.
//
class _exported DbException
{
public:
virtual ~DbException();
DbException(int err);
DbException(const char *description);
DbException(const char *prefix, int err);
DbException(const char *prefix1, const char *prefix2, int err);
int get_errno() const;
virtual const char *what() const;
DbException(const DbException &);
DbException &operator = (const DbException &);
private:
char *what_;
int err_; // errno
};
//
// A specific sort of exception that occurs when
// an operation is aborted to resolve a deadlock.
//
class _exported DbDeadlockException : public DbException
{
public:
virtual ~DbDeadlockException();
DbDeadlockException(const char *description);
DbDeadlockException(const DbDeadlockException &);
DbDeadlockException &operator = (const DbDeadlockException &);
};
//
// A specific sort of exception that occurs when
// a lock is not granted, e.g. by lock_get or lock_vec.
// Note that the Dbt is only live as long as the Dbt used
// in the offending call.
//
class _exported DbLockNotGrantedException : public DbException
{
public:
virtual ~DbLockNotGrantedException();
DbLockNotGrantedException(const char *prefix, db_lockop_t op,
db_lockmode_t mode, const Dbt *obj, const DbLock lock, int index);
DbLockNotGrantedException(const DbLockNotGrantedException &);
DbLockNotGrantedException &operator =
(const DbLockNotGrantedException &);
db_lockop_t get_op() const;
db_lockmode_t get_mode() const;
const Dbt* get_obj() const;
DbLock *get_lock() const;
int get_index() const;
private:
db_lockop_t op_;
db_lockmode_t mode_;
const Dbt *obj_;
DbLock *lock_;
int index_;
};
//
// A specific sort of exception that occurs when
// user declared memory is insufficient in a Dbt.
//
class _exported DbMemoryException : public DbException
{
public:
virtual ~DbMemoryException();
DbMemoryException(Dbt *dbt);
DbMemoryException(const char *description);
DbMemoryException(const char *prefix, Dbt *dbt);
DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
Dbt *get_dbt() const;
DbMemoryException(const DbMemoryException &);
DbMemoryException &operator = (const DbMemoryException &);
private:
Dbt *dbt_;
};
//
// A specific sort of exception that occurs when
// recovery is required before continuing DB activity.
//
class _exported DbRunRecoveryException : public DbException
{
public:
virtual ~DbRunRecoveryException();
DbRunRecoveryException(const char *description);
DbRunRecoveryException(const DbRunRecoveryException &);
DbRunRecoveryException &operator = (const DbRunRecoveryException &);
};
#endif /* !_CXX_EXCEPT_H_ */
|