(file) Return to NormalizedSubscriptionTable.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / IndicationService

  1 martin 1.4 //%LICENSE////////////////////////////////////////////////////////////////
  2 martin 1.5 //
  3 martin 1.4 // Licensed to The Open Group (TOG) under one or more contributor license
  4            // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
  5            // this work for additional information regarding copyright ownership.
  6            // Each contributor licenses this file to you under the OpenPegasus Open
  7            // Source License; you may not use this file except in compliance with the
  8            // License.
  9 martin 1.5 //
 10 martin 1.4 // Permission is hereby granted, free of charge, to any person obtaining a
 11            // copy of this software and associated documentation files (the "Software"),
 12            // to deal in the Software without restriction, including without limitation
 13            // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 14            // and/or sell copies of the Software, and to permit persons to whom the
 15            // Software is furnished to do so, subject to the following conditions:
 16 martin 1.5 //
 17 martin 1.4 // The above copyright notice and this permission notice shall be included
 18            // in all copies or substantial portions of the Software.
 19 martin 1.5 //
 20 martin 1.4 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 21 martin 1.5 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 22 martin 1.4 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 23            // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 24            // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 25            // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 26            // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27 martin 1.5 //
 28 martin 1.4 //////////////////////////////////////////////////////////////////////////
 29 venkat.puvvada 1.1 //
 30                    //%/////////////////////////////////////////////////////////////////////////////
 31                    
 32                    #include <Pegasus/Common/Tracer.h>
 33                    #include <Pegasus/Common/Constants.h>
 34                    #include <Pegasus/Common/CIMInstance.h>
 35                    
 36                    #include "NormalizedSubscriptionTable.h"
 37                    #include "IndicationConstants.h"
 38                    
 39                    PEGASUS_NAMESPACE_BEGIN
 40                    
 41                    NormalizedSubscriptionTable::NormalizedSubscriptionTable(
 42                        const Array<CIMInstance> &subscriptions)
 43                    {
 44                        for (Uint32 i = 0; i < subscriptions.size() ; ++i)
 45                        {
 46                            if (!add(subscriptions[i].getPath()))
 47                            {
 48 thilo.boehm    1.3             PEG_TRACE((TRC_INDICATION_SERVICE, Tracer::LEVEL2,
 49 thilo.boehm    1.2                 "Subscription already exists : %s",
 50                                    (const char*)
 51                                         subscriptions[i].getPath().toString().getCString()));
 52 venkat.puvvada 1.1         }
 53                        }
 54                    }
 55                    
 56                    NormalizedSubscriptionTable::~NormalizedSubscriptionTable()
 57                    {
 58                    }
 59                    
 60                    Boolean NormalizedSubscriptionTable:: remove(const CIMObjectPath &subPath)
 61                    {
 62                        return _subscriptionTable.remove(normalize(subPath));
 63                    }
 64                    
 65                    Boolean NormalizedSubscriptionTable::add(const CIMObjectPath &subPath,
 66                        const Boolean &value)
 67                    {
 68                        return _subscriptionTable.insert(normalize(subPath), value);
 69                    }
 70                    
 71                    Boolean NormalizedSubscriptionTable::exists(const CIMObjectPath &subPath,
 72                        Boolean &value)
 73 venkat.puvvada 1.1 {
 74                        return _subscriptionTable.lookup(normalize(subPath), value);
 75                    }
 76                    
 77                    CIMObjectPath NormalizedSubscriptionTable::normalize(
 78                        const CIMObjectPath &subPath)
 79                    {
 80                        PEG_METHOD_ENTER(TRC_INDICATION_SERVICE,
 81                            "SubscriptionRepository::normalizeSubscriptionPath");
 82                    
 83                       // Normalize the subscription object path.
 84                        Array<CIMKeyBinding> subscriptionKB = subPath.getKeyBindings();
 85                        CIMObjectPath filterPath;
 86                        CIMObjectPath handlerPath;
 87                    
 88                        for (Uint32 i = 0; i < subscriptionKB.size(); i++)
 89                        {
 90                            if ((subscriptionKB [i].getName() == PEGASUS_PROPERTYNAME_FILTER) &&
 91                                (subscriptionKB [i].getType() == CIMKeyBinding::REFERENCE))
 92                            {
 93                                filterPath = subscriptionKB[i].getValue();
 94 venkat.puvvada 1.1         }
 95                            if ((subscriptionKB [i].getName() == PEGASUS_PROPERTYNAME_HANDLER) &&
 96                                (subscriptionKB [i].getType() == CIMKeyBinding::REFERENCE))
 97                            {
 98                                handlerPath = subscriptionKB[i].getValue();
 99                            }
100                        }
101                        // Remove Host Tag
102                        filterPath.setHost(String::EMPTY);
103                        handlerPath.setHost(String::EMPTY);
104                    
105                        // Remove Namespaces if Subscription namespace, Filter and Handler
106                        // namespaces are same.
107                        CIMNamespaceName subNamespace = subPath.getNameSpace();
108                        if (filterPath.getNameSpace() == subNamespace)
109                        {
110                            filterPath.setNameSpace (CIMNamespaceName());
111                        }
112                        if (handlerPath.getNameSpace() == subNamespace)
113                        {
114                            handlerPath.setNameSpace (CIMNamespaceName());
115 venkat.puvvada 1.1     }
116                    
117                        Array<CIMKeyBinding> kb;
118                        kb.append(CIMKeyBinding(
119                            PEGASUS_PROPERTYNAME_FILTER, CIMValue(filterPath)));
120                        kb.append(CIMKeyBinding(
121                            PEGASUS_PROPERTYNAME_HANDLER, CIMValue(handlerPath)));
122                    
123                        PEG_METHOD_EXIT();
124                        return CIMObjectPath("", subNamespace, subPath.getClassName(), kb);
125                    }
126                    
127                    PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2