OW_PerlProviderIFC.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 #ifndef OW_PerlPROVIDERIFC_HPP_
00031 #define OW_PerlPROVIDERIFC_HPP_
00032 #include "OW_config.h"
00033 #include "OW_SharedLibrary.hpp"
00034 #include "OW_ProviderIFCBaseIFC.hpp"
00035 #include "OW_Map.hpp"
00036 #include "OW_MutexLock.hpp"
00037 #include "OW_FTABLERef.hpp"
00038 
00039 namespace OW_NAMESPACE
00040 {
00041 
00046 class PerlProviderIFC : public ProviderIFCBaseIFC
00047 {
00048 public:
00049    static const char * const CREATIONFUNC;
00050    PerlProviderIFC();
00051    ~PerlProviderIFC();
00052 protected:
00053    virtual const char* getName() const { return "perl"; }
00054    virtual void doInit(const ProviderEnvironmentIFCRef& env,
00055       InstanceProviderInfoArray& i,
00056       SecondaryInstanceProviderInfoArray& si,
00057 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00058       AssociatorProviderInfoArray& a,
00059 #endif
00060       MethodProviderInfoArray& m,
00061       IndicationProviderInfoArray& ind);
00062    virtual InstanceProviderIFCRef doGetInstanceProvider(
00063       const ProviderEnvironmentIFCRef& env,
00064       const char* provIdString);
00065    virtual MethodProviderIFCRef doGetMethodProvider(
00066       const ProviderEnvironmentIFCRef& env,
00067       const char* provIdString);
00068 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00069    virtual AssociatorProviderIFCRef doGetAssociatorProvider(
00070       const ProviderEnvironmentIFCRef& env,
00071       const char* provIdString);
00072 #endif
00073    virtual IndicationProviderIFCRef doGetIndicationProvider(
00074       const ProviderEnvironmentIFCRef& env,
00075       const char* provIdString);
00076    virtual IndicationExportProviderIFCRefArray doGetIndicationExportProviders(
00077       const ProviderEnvironmentIFCRef& env
00078       );
00079    virtual PolledProviderIFCRefArray doGetPolledProviders(
00080       const ProviderEnvironmentIFCRef& env
00081       );
00082    void loadProviders(const ProviderEnvironmentIFCRef& env,
00083       InstanceProviderInfoArray& i,
00084 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00085       AssociatorProviderInfoArray& a,
00086 #endif
00087       MethodProviderInfoArray& m,
00088       IndicationProviderInfoArray& ind);
00089    virtual void doUnloadProviders(const ProviderEnvironmentIFCRef& env)
00090    {
00091       // TODO
00092    }
00093 private:
00094    typedef Map<String, FTABLERef> ProviderMap;
00095    //typedef Array<SharedLibraryObject<FTABLERef> > LoadedProviderArray;
00096    typedef Array<FTABLERef > LoadedProviderArray;
00097    FTABLERef getProvider(const ProviderEnvironmentIFCRef& env,
00098       const char* provIdString);
00099    void loadNoIdProviders(const ProviderEnvironmentIFCRef& env);
00100    ProviderMap m_provs;
00101    Mutex m_guard;
00102    LoadedProviderArray m_noidProviders;
00103    bool m_loadDone;
00104 };
00105 typedef SharedLibraryReference< Reference<PerlProviderIFC> > PerlProviderIFCRef;
00106 
00107 } // end namespace OW_NAMESPACE
00108 
00109 #endif

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