Click here to Skip to main content
12,299,262 members (60,696 online)
Click here to Skip to main content
Articles » Database » Database » General » Downloads


56 bookmarked

DarkSide SQL Mini Version 1, The embedded database

, 23 Mar 2006 BSD
An embedded database library in C++.
 * See the file LICENSE for redistribution information.
 * Copyright (c) 1997-2002
 *	Sleepycat Software.  All rights reserved.
 * $Id: cxx_except.h,v 11.5 2002/08/01 23:32:34 mjc 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
	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 &);

	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
	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
	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;

	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
	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 &);

	Dbt *dbt_;

// A specific sort of exception that occurs when
// recovery is required before continuing DB activity.
class _exported DbRunRecoveryException : public DbException
	virtual ~DbRunRecoveryException();
	DbRunRecoveryException(const char *description);

	DbRunRecoveryException(const DbRunRecoveryException &);
	DbRunRecoveryException &operator = (const DbRunRecoveryException &);

#endif /* !_CXX_EXCEPT_H_ */

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


This article, along with any associated source code and files, is licensed under The BSD License


About the Author

No Biography provided

You may also be interested in...

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160525.2 | Last Updated 23 Mar 2006
Article Copyright 2003 by AnOldGreenHorn
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid