OW_CIMException.hpp

Go to the documentation of this file.
00001 /*******************************************************************************
00002 * Copyright (C) 2001-2004 Vintela, Inc. All rights reserved.
00003 *
00004 * Redistribution and use in source and binary forms, with or without
00005 * modification, are permitted provided that the following conditions are met:
00006 *
00007 *  - Redistributions of source code must retain the above copyright notice,
00008 *    this list of conditions and the following disclaimer.
00009 *
00010 *  - Redistributions in binary form must reproduce the above copyright notice,
00011 *    this list of conditions and the following disclaimer in the documentation
00012 *    and/or other materials provided with the distribution.
00013 *
00014 *  - Neither the name of Vintela, Inc. nor the names of its
00015 *    contributors may be used to endorse or promote products derived from this
00016 *    software without specific prior written permission.
00017 *
00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021 * ARE DISCLAIMED. IN NO EVENT SHALL Vintela, Inc. OR THE CONTRIBUTORS
00022 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00028 * POSSIBILITY OF SUCH DAMAGE.
00029 *******************************************************************************/
00030 
00036 #ifndef OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00037 #define OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_Exception.hpp"
00040 
00041 namespace OW_NAMESPACE
00042 {
00043 
00044 class OW_COMMON_API CIMException : public Exception
00045 {
00046 public:
00047    enum ErrNoType
00048    {
00050       SUCCESS = 0,
00055       FAILED = 1,
00057       ACCESS_DENIED = 2,
00059       INVALID_NAMESPACE = 3,
00061       INVALID_PARAMETER = 4,
00063       INVALID_CLASS = 5,
00065       NOT_FOUND = 6,
00067       NOT_SUPPORTED = 7,
00071       CLASS_HAS_CHILDREN = 8,
00075       CLASS_HAS_INSTANCES = 9,
00080       INVALID_SUPERCLASS = 10,
00082       ALREADY_EXISTS = 11,
00084       NO_SUCH_PROPERTY = 12,
00086       TYPE_MISMATCH = 13,
00088       QUERY_LANGUAGE_NOT_SUPPORTED = 14,
00090       INVALID_QUERY = 15,
00092       METHOD_NOT_AVAILABLE = 16,
00094       METHOD_NOT_FOUND = 17
00095    };
00096 
00097    CIMException(const char* file, int line, ErrNoType errval,
00098       const char* msg=0, const Exception* otherException = 0);
00099 
00100    virtual ~CIMException() throw();
00101    void swap(CIMException& x);
00102    CIMException(const CIMException& x);
00103    CIMException& operator=(const CIMException& x);
00104    
00105    ErrNoType getErrNo() const { return ErrNoType(getErrorCode()); }
00106    void setErrNo(ErrNoType e) { setErrorCode(e); }
00113    const char* getDescription() const;
00114    virtual const char* type() const;
00115    virtual CIMException* clone() const throw();
00116 
00123    static const char* getCodeDescription(ErrNoType errCode);
00124 
00125 private:
00126    const char* m_description;
00127 };
00128 
00134 #define OW_THROWCIM(errval) \
00135    throw CIMException(__FILE__, __LINE__, (errval))
00136    
00144 #define OW_THROWCIM_SUBEX(errval, subex) \
00145    throw CIMException(__FILE__, __LINE__, (errval), (subex).getMessage(), &(subex))
00146    
00152 #define OW_THROWCIMMSG(errval, msg) \
00153    throw CIMException(__FILE__, __LINE__, (errval), (msg))
00154 
00162 #define OW_THROWCIMMSG_SUBEX(errval, msg, subex) \
00163    throw CIMException(__FILE__, __LINE__, (errval), (msg), &(subex))
00164    
00165 } // end namespace OW_NAMESPACE
00166 
00167 #endif

Generated on Thu Feb 9 08:47:53 2006 for openwbem by  doxygen 1.4.6