OW_CMPIProviderIFC.hpp

Go to the documentation of this file.
00001 /*******************************************************************************
00002 * Copyright (C) 2003-2004 Vintela, Inc., IBM Corp. 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 * Author:        Markus Mueller <sedgewick_de@yahoo.de>
00031 *
00032 *******************************************************************************/
00033 #ifndef OW_CMPIPROVIDERIFC_HPP_
00034 #define OW_CMPIPROVIDERIFC_HPP_
00035 #include "OW_config.h"
00036 #include "OW_SharedLibrary.hpp"
00037 #include "OW_ProviderIFCBaseIFC.hpp"
00038 #include "OW_Map.hpp"
00039 #include "OW_MutexLock.hpp"
00040 #include "OW_FTABLERef.hpp"
00041 #include "cmpisrv.h"
00042 #include "cmpidt.h"
00043 #include "cmpift.h"
00044 
00045 namespace OW_NAMESPACE
00046 {
00047 
00052 //static ::CMPIBroker broker;
00053 class CMPIProviderIFC : public ProviderIFCBaseIFC
00054 {
00055 public:
00056    static const char * const CREATIONFUNC;
00057    CMPIProviderIFC();
00058    ~CMPIProviderIFC();
00059       //static ::CMPIBroker * getBroker() { return &(_broker); }
00060 protected:
00061    //static ::CMPIBroker _broker;
00062    virtual const char* getName() const { return "cmpi"; }
00063    virtual void doInit(const ProviderEnvironmentIFCRef& env,
00064       InstanceProviderInfoArray& i,
00065       SecondaryInstanceProviderInfoArray& si,
00066 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00067       AssociatorProviderInfoArray& a,
00068 #endif
00069       MethodProviderInfoArray& m,
00070       IndicationProviderInfoArray& ind);
00071    virtual InstanceProviderIFCRef doGetInstanceProvider(
00072       const ProviderEnvironmentIFCRef& env,
00073       const char* provIdString);
00074    virtual MethodProviderIFCRef doGetMethodProvider(
00075       const ProviderEnvironmentIFCRef& env,
00076       const char* provIdString);
00077 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00078    virtual AssociatorProviderIFCRef doGetAssociatorProvider(
00079       const ProviderEnvironmentIFCRef& env,
00080       const char* provIdString);
00081 #endif
00082    virtual IndicationProviderIFCRef doGetIndicationProvider(
00083       const ProviderEnvironmentIFCRef& env,
00084       const char* provIdString);
00085    virtual IndicationExportProviderIFCRefArray doGetIndicationExportProviders(
00086       const ProviderEnvironmentIFCRef& env
00087       );
00088    virtual PolledProviderIFCRefArray doGetPolledProviders(
00089       const ProviderEnvironmentIFCRef& env
00090       );
00091    virtual void doUnloadProviders(const ProviderEnvironmentIFCRef& env);
00092 private:
00093    typedef Map<String, CMPIFTABLERef> ProviderMap;
00094    //typedef Array<SharedLibraryObject<CMPIFTABLERef> > LoadedProviderArray;
00095    typedef Array<CMPIFTABLERef > LoadedProviderArray;
00096    CMPIFTABLERef getProvider(const ProviderEnvironmentIFCRef& env,
00097       const char* provIdString);
00098    void loadNoIdProviders(const ProviderEnvironmentIFCRef& env);
00099    ProviderMap m_provs;
00100    Mutex m_guard;
00101    LoadedProviderArray m_noidProviders;
00102    bool m_loadDone;
00103 // BMMU
00104    MIs miVector;
00105    ::CMPI_Broker _broker;
00106 };
00107 typedef SharedLibraryReference<Reference<CMPIProviderIFC> > CMPIProviderIFCRef;
00108 
00109 } // end namespace OW_NAMESPACE
00110 
00111 #endif

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