(file) Return to JMPILocalProviderManager.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / JMPI

  1 karl  1.10 //%2006////////////////////////////////////////////////////////////////////////
  2 schuur 1.1  //
  3 karl   1.6  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4             // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5             // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6             // IBM Corp.; EMC Corporation, The Open Group.
  7             // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8             // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl   1.7  // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10             // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl   1.10 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12             // EMC Corporation; Symantec Corporation; The Open Group.
 13 schuur 1.1  //
 14             // Permission is hereby granted, free of charge, to any person obtaining a copy
 15             // of this software and associated documentation files (the "Software"), to
 16             // deal in the Software without restriction, including without limitation the
 17             // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18             // sell copies of the Software, and to permit persons to whom the Software is
 19             // furnished to do so, subject to the following conditions:
 20 mark.hamzy 1.11 //
 21 schuur     1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22                 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23                 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24                 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25                 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26                 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27                 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28                 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29                 //
 30                 //==============================================================================
 31                 //
 32                 //%/////////////////////////////////////////////////////////////////////////////
 33                 #include "JMPILocalProviderManager.h"
 34                 
 35 mike       1.14 #include <Pegasus/Common/Time.h>
 36 schuur     1.1  #include <Pegasus/Common/Constants.h>
 37                 #include <Pegasus/Common/Tracer.h>
 38                 #include <Pegasus/Common/PegasusVersion.h>
 39                 
 40 kumpf      1.15 #include <Pegasus/ProviderManager2/ProviderManager.h>
 41 schuur     1.1  #include <Pegasus/ProviderManager2/JMPI/JMPIProvider.h>
 42                 #include <Pegasus/ProviderManager2/JMPI/JMPIProviderModule.h>
 43                 
 44                 PEGASUS_USING_STD;
 45                 PEGASUS_NAMESPACE_BEGIN
 46                 
 47                 JMPILocalProviderManager::JMPILocalProviderManager(void)
 48 r.kieninger 1.19     : _idle_timeout(PEGASUS_PROVIDER_IDLE_TIMEOUT_SECONDS)
 49 schuur      1.1  {
 50                  }
 51                  
 52                  JMPILocalProviderManager::~JMPILocalProviderManager(void)
 53                  {
 54                      Uint32 ccode;
 55                  
 56                      _provider_ctrl(UNLOAD_ALL_PROVIDERS, this, &ccode);
 57                  }
 58                  
 59 marek       1.20 Sint32 JMPILocalProviderManager::_provider_ctrl(
 60                      CTRL code,
 61                      void *parm,
 62                      void *ret)
 63 schuur      1.1  {
 64                      static Uint32 quantum;
 65 thilo.boehm 1.21     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, 
 66                           "JMPILocalProviderManager::_provider_ctrl");
 67 schuur      1.1  
 68                      Sint32 ccode = 0;
 69                      CTRL_STRINGS *parms = reinterpret_cast<CTRL_STRINGS *>(parm);
 70                  
 71                      switch(code)
 72                      {
 73                  
 74                      case GET_PROVIDER:
 75                          {
 76 mark.hamzy  1.9              String providerName = *(parms->providerName);
 77                              String moduleFileName = *(parms->fileName);
 78                              String interfaceName = *(parms->interfaceName);
 79                  
 80 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
 81 thilo.boehm 1.21                  "GET_PROVIDER providerName = %s, "
 82                                       "moduleFileName = %s , interfaceName = %s",
 83                                   (const char*)providerName.getCString(),
 84                                   (const char*)moduleFileName.getCString(),
 85                                   (const char*)interfaceName.getCString()));
 86 schuur      1.1  
 87 mark.hamzy  1.11             if (providerName.size () == 0)
 88                              {
 89 thilo.boehm 1.21                PEG_METHOD_EXIT();
 90 mark.hamzy  1.11                throw NullPointer();
 91                              }
 92                  
 93 schuur      1.1              JMPIProvider::OpProviderHolder* ph =
 94 mark.hamzy  1.9                 reinterpret_cast< JMPIProvider::OpProviderHolder* >( ret );
 95                              JMPIProviderModule *newModule = NULL;
 96                              JMPIProviderModule *module = NULL;
 97                              JMPIProvider *newProvider = NULL;
 98                              JMPIProvider *provider = NULL;
 99                              ProviderVector base;
100 schuur      1.1  
101                              try
102                              {
103 mark.hamzy  1.12                AutoMutex lock (_providerTableMutex);
104                  
105                                 if (true == _providers.lookup(providerName, provider))
106 mark.hamzy  1.9                 {
107 thilo.boehm 1.21                    PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
108                                          "Found JMPIProvider %s in JMPIProvider Manager Cache",
109                                          (const char*)providerName.getCString()));
110                                     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
111 thilo.boehm 1.22                         "SetProvider(%p) at provider holder.",provider));
112 schuur      1.1  
113 mark.hamzy  1.12                    ph->SetProvider(provider);
114 mark.hamzy  1.9  
115 mark.hamzy  1.12 ///////////////////ph->GetProvider().update_idle_timer();
116                                     break;
117                                 }
118 mark.hamzy  1.9  
119 marek       1.23                PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
120 thilo.boehm 1.21                     "Creating JMPIProvider %s",
121                                      (const char*)providerName.getCString()));
122 mark.hamzy  1.9  
123 mark.hamzy  1.12                if (false == _modules.lookup(moduleFileName, module))
124                                 {
125 thilo.boehm 1.21                    PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
126                                          "Creating JMPIProvider Module %s",
127                                          (const char*)moduleFileName.getCString()));
128 mark.hamzy  1.9  
129 mark.hamzy  1.12                    newModule = new JMPIProviderModule(moduleFileName,
130                                                                        interfaceName);
131                                     if (0 == newModule)
132                                     {
133 marek       1.23                        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL1,
134 thilo.boehm 1.21                             "New JMPIProviderModule is NULL!");
135                                         PEG_METHOD_EXIT();
136 mark.hamzy  1.12                        throw NullPointer();
137                                     }
138 mark.hamzy  1.9  
139 mark.hamzy  1.12                    module = newModule;
140 mark.hamzy  1.9  
141 mark.hamzy  1.12                    _modules.insert(moduleFileName, module);
142                                 }
143                                 else
144                                 {
145 thilo.boehm 1.21                    PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
146                                          "Using Cached JMPIProvider Module %s",
147                                          (const char*)moduleFileName.getCString()));
148 mark.hamzy  1.9                 }
149                  
150 thilo.boehm 1.21                PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
151                                      "Loading/Linking JMPIProvider Module %s",
152                                      (const char*)moduleFileName.getCString()));
153 mark.hamzy  1.9  
154                                 try
155                                 {
156                                     base = module->load(moduleFileName);
157                                 }
158                                 catch(...)
159                                 {
160 marek       1.23                    PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL1,
161 mark.hamzy  1.9                                      "Exception caught Loading/Linking"
162 thilo.boehm 1.21                             "JMPIProvider Module %s",
163                                          (const char*)moduleFileName.getCString()));
164                                     PEG_METHOD_EXIT();
165 mark.hamzy  1.9                     throw;
166                                 }
167                  
168                                 // create provider module
169                                 newProvider = new JMPIProvider(providerName, module, &base);
170                                 if (0 == newProvider)
171                                 {
172 marek       1.23                    PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL1,
173 thilo.boehm 1.21                                     "New JMPIProvider is NULL!");
174                                     PEG_METHOD_EXIT();
175 mark.hamzy  1.9                     throw NullPointer();
176                                 }
177                  
178                                 provider = newProvider;
179                  
180                                 if (0 == (provider->_cimom_handle = new CIMOMHandle()))
181                                 {
182 marek       1.23                    PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL1,
183 thilo.boehm 1.21                                     "CIMOMhandle is NULL!");
184                                     PEG_METHOD_EXIT();
185 mark.hamzy  1.9                     throw NullPointer();
186                                 }
187                  
188                                 provider->_quantum = 0;
189                  
190                                 {
191                                    AutoMutex lock(provider->_statusMutex);
192                  
193 marek       1.23                   PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
194 thilo.boehm 1.21                        "Loading JMPIProvider %s",
195                                         (const char*)provider->_name.getCString()));
196 mark.hamzy  1.9                    try
197                                    {
198                                        provider->initialize(*(provider->_cimom_handle));
199                                    }
200 marek       1.13                   catch(CIMException &cimExcept)
201                                    {
202 marek       1.23                       PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL1,
203 thilo.boehm 1.21                           "Calling provider->initialize caused exception: %s",
204                                            (const char*)cimExcept.getMessage().getCString()));
205                  
206 marek       1.13                       throw;
207 mark.hamzy  1.17                   }
208 marek       1.13                   catch(Exception &except)
209                                    {
210 marek       1.23                       PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL1,
211 thilo.boehm 1.21                           "Calling provider->initialize caused exception: %s",
212                                            (const char*)except.getMessage().getCString()));
213                  
214 mark.hamzy  1.17                       throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,
215 marek       1.13                                                   except.getMessage());
216                                    }
217 mark.hamzy  1.9                    catch(...)
218                                    {
219 marek       1.23                       PEG_TRACE_CSTRING(TRC_DISCARDED_DATA,Tracer::LEVEL1,
220 mark.hamzy  1.9                                         "Exception caught calling initialize!");
221                  
222                                        throw UninitializedObjectException();
223                                    }
224                                 }
225 mark.hamzy  1.12 
226                  ///////////////provider->update_idle_timer();
227                  
228                                 _providers.insert(providerName, provider);
229 mark.hamzy  1.9              }
230                              catch (...)
231                              {
232                                 if (newModule)
233                                 {
234                                    _modules.remove(moduleFileName);
235                                 }
236                  
237                                 delete newModule;
238                  
239                                 if (newProvider)
240                                 {
241                                    delete newProvider->_cimom_handle;
242                                 }
243                  
244                                 delete newProvider;
245 thilo.boehm 1.21                PEG_METHOD_EXIT();
246 mark.hamzy  1.9                 throw;
247                              }
248                  
249 thilo.boehm 1.21             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
250 thilo.boehm 1.22                  "SetProvider(%p) at provider holder.",provider));
251 schuur      1.1  
252 mark.hamzy  1.9              ph->SetProvider( provider );
253 schuur      1.1              break;
254                          }
255                  
256                      case UNLOAD_PROVIDER:
257 mark.hamzy  1.9          {
258 marek       1.23             PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL3,
259 thilo.boehm 1.21                 "UNLOAD_PROVIDER");
260 mark.hamzy  1.9              break;
261 schuur      1.1          }
262                  
263                      case LOOKUP_PROVIDER:
264                          {
265 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
266 thilo.boehm 1.21                  "LOOKUP_PROVIDER providerName = %s ",
267                                   (const char*)*(parms->providerName)->getCString()));
268 mark.hamzy  1.9  
269                              AutoMutex lock (_providerTableMutex);
270                  
271                              if (true == _providers.lookup(*(parms->providerName),
272                                                     *(reinterpret_cast<JMPIProvider * *>(ret))))
273                              {
274 thilo.boehm 1.21                 PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
275                                       "Found JMPIProvider %s in JMPIProvider Manager Cache",
276                                       (const char*)*(parms->providerName)->getCString()));
277 schuur      1.1              }
278                              else
279                              {
280 marek       1.23                 PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2,
281 thilo.boehm 1.21                      "Could not find JMPIProvider %s in "
282                                           "JMPIProvider Manager Cache",
283                                       (const char*)*(parms->providerName)->getCString()));
284 schuur      1.1                  ccode = -1;
285                              }
286                  
287                              break;
288                          }
289                  
290                      case LOOKUP_MODULE:
291                          {
292 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
293 thilo.boehm 1.21                  "LOOKUP_MODULE moduleName = %s ",
294                                   (const char*)*(parms->fileName)->getCString()));
295 schuur      1.1  
296 mark.hamzy  1.9              AutoMutex lock (_providerTableMutex);
297 schuur      1.1  
298 mark.hamzy  1.9              if (false  == _modules.lookup(*(parms->fileName),
299 schuur      1.1                  *(reinterpret_cast<JMPIProviderModule * *>(ret))))
300                              {
301 marek       1.23                 PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2,
302 thilo.boehm 1.21                      "Could not find JMPIProvider Module %s in "
303                                           "JMPIProvider Manager Cache",
304                                       (const char*)*(parms->fileName)->getCString()));
305 schuur      1.1                  ccode = -1;
306                              }
307                  
308                              break;
309                          }
310                  
311                      case INSERT_PROVIDER:
312                          {
313 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
314 thilo.boehm 1.21                  "INSERT_PROVIDER providerName = %s ",
315                                   (const char*)*(parms->providerName)->getCString()));
316 mark.hamzy  1.9  
317                              AutoMutex lock (_providerTableMutex);
318 schuur      1.1  
319 mark.hamzy  1.9              if (false  == _providers.insert(*(parms->providerName),
320                                                      *reinterpret_cast<JMPIProvider * *>(parm)))
321 thilo.boehm 1.21             {
322                                  PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
323                                       "Can not insert JMPIProvider %s into "
324                                           "JMPIProvider Manager Cache",
325                                       (const char*)*(parms->providerName)->getCString()));
326 schuur      1.1                  ccode = -1;
327 thilo.boehm 1.21             }
328 schuur      1.1              break;
329                          }
330 mark.hamzy  1.9  
331 schuur      1.1      case INSERT_MODULE:
332                          {
333 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
334 thilo.boehm 1.21                  "INSERT_MODULE moduleName = %s ",
335                                   (const char*)*(parms->fileName)->getCString()));
336 mark.hamzy  1.9  
337                              AutoMutex lock (_providerTableMutex);
338                  
339                              if(false  == _modules.insert(*(parms->fileName),
340                                                *reinterpret_cast<JMPIProviderModule * *>(parm)))
341 thilo.boehm 1.21             {
342                                  PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
343                                       "Can not insert JMPIProvider Module %s into "
344                                           "JMPIProvider Manager Cache",
345                                       (const char*)*(parms->fileName)->getCString()));
346 schuur      1.1                  ccode = -1;
347 thilo.boehm 1.21             }
348 schuur      1.1              break;
349                          }
350 mark.hamzy  1.9  
351 schuur      1.1      case REMOVE_PROVIDER:
352                          {
353 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
354 thilo.boehm 1.21                  "REMOVE_PROVIDER providerName = %s ",
355                                   (const char*)*(parms->providerName)->getCString()));
356 schuur      1.1  
357 mark.hamzy  1.9              AutoMutex lock (_providerTableMutex);
358                  
359                              if (false == _providers.remove(*(parms->providerName)))
360 thilo.boehm 1.21             {
361                                  PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
362                                       "Can not remove JMPIProvider %s from "
363                                           "JMPIProvider Manager Cache",
364                                       (const char*)*(parms->providerName)->getCString()));
365 schuur      1.1                  ccode = -1;
366 thilo.boehm 1.21             }
367                               
368 schuur      1.1              break;
369                          }
370 mark.hamzy  1.9  
371 schuur      1.1      case REMOVE_MODULE:
372                          {
373 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL3,
374 thilo.boehm 1.21                  "REMOVE_MODULE moduleName = %s ",
375                                   (const char*)*(parms->fileName)->getCString()));
376 schuur      1.1  
377 mark.hamzy  1.9              AutoMutex lock (_providerTableMutex);
378                  
379                              if (false == _modules.remove(*(parms->fileName)))
380 thilo.boehm 1.21             {
381                                  PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
382                                       "Can not remove JMPIProvider Module %s from "
383                                           "JMPIProvider Manager Cache",
384                                       (const char*)*(parms->fileName)->getCString()));
385 schuur      1.1                  ccode = -1;
386 thilo.boehm 1.21             }
387 schuur      1.1              break;
388                          }
389                  
390                      case UNLOAD_ALL_PROVIDERS:
391 schuur      1.4          {
392 marek       1.23             PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL3,
393 thilo.boehm 1.21                 "UNLOAD_ALL_PROVIDERS");
394 schuur      1.4             JMPIjvm::destroyJVM();
395 mark.hamzy  1.9             break;
396                          }
397 schuur      1.4  
398 schuur      1.1      case UNLOAD_IDLE_PROVIDERS:
399 mark.hamzy  1.9           {
400 marek       1.23            PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL3,
401 thilo.boehm 1.21                "UNLOAD_IDLE_PROVIDERS");
402 mark.hamzy  1.9             break;
403 schuur      1.1          }
404                  
405                      case UNLOAD_IDLE_MODULES:
406 mark.hamzy  1.9          {
407 marek       1.23             PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL3,
408 thilo.boehm 1.21                 "UNLOAD_IDLE_MODULES");
409 mark.hamzy  1.9             break;
410 schuur      1.1          }
411                  
412                      default:
413 mark.hamzy  1.9          {
414 marek       1.23             PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL1,
415 thilo.boehm 1.21                  "Provider Control: Unknown function code %d.",
416                                   code));
417 mark.hamzy  1.9             ccode = -1;
418                             break;
419                          }
420 schuur      1.1      }
421                      PEG_METHOD_EXIT();
422                      return(ccode);
423                  }
424                  
425                  JMPIProvider * JMPILocalProviderManager::_getResolver
426                     (const String & fileName, const String & interfaceType)
427                  {
428                      JMPIProvider *pr;
429                      String id(interfaceType+String("::")+fileName);
430                      if (true == _resolvers.lookup(id,pr)) {
431                         return pr;
432                      }
433                      return NULL;
434                  }
435 mark.hamzy  1.9  
436 schuur      1.1  JMPIProvider::OpProviderHolder JMPILocalProviderManager::getProvider(
437                      const String & fileName,
438                      const String & providerName,
439                      const String & interfaceName)
440                  {
441                      JMPIProvider::OpProviderHolder ph;
442                      CTRL_STRINGS strings;
443                      Sint32 ccode;
444                      strings.fileName = &fileName;
445                      strings.providerName = &providerName;
446                      strings.interfaceName = &interfaceName;
447                  
448 mark.hamzy  1.9      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::getProvider");
449                  
450 schuur      1.1      try {
451                          ccode = _provider_ctrl( GET_PROVIDER, &strings, &ph );
452                      }
453 thilo.boehm 1.21     catch (const Exception &e) 
454                      {
455 marek       1.23         PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL1,
456 thilo.boehm 1.21              "Can not get provider. Caught exception: %s",
457                              (const char*)e.getMessage().getCString()));
458 mark.hamzy  1.9          PEG_METHOD_EXIT();
459 schuur      1.1          throw;
460 mark.hamzy  1.9      }
461 schuur      1.1      catch(...) {
462 marek       1.23         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA,Tracer::LEVEL1,
463 thilo.boehm 1.21              "Can not get provider. Caught unknown exception,");
464 schuur      1.1          PEG_METHOD_EXIT();
465                          throw;
466                      }
467                  
468                      PEG_METHOD_EXIT();
469                      return(ph);
470                  }
471                  
472                  void JMPILocalProviderManager::unloadProvider(
473                      const String & fileName,
474                      const String & providerName)
475                  {
476                      CTRL_STRINGS strings;
477                      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::unloadProvider");
478                      strings.fileName = &fileName;
479                      strings.providerName = &providerName;
480                      _provider_ctrl(UNLOAD_PROVIDER, &strings, (void *)0);
481                      PEG_METHOD_EXIT();
482                  }
483                  
484                  void JMPILocalProviderManager::shutdownAllProviders(void)
485 schuur      1.1  {
486 marek       1.20     PEG_METHOD_ENTER(
487                          TRC_PROVIDERMANAGER,
488                          "ProviderManager::shutdownAllProviders");
489 schuur      1.1      _provider_ctrl(UNLOAD_ALL_PROVIDERS, (void *)this, (void *)0);
490                      PEG_METHOD_EXIT();
491                  }
492                  
493                  
494 kumpf       1.2  Boolean JMPILocalProviderManager::hasActiveProviders()
495 schuur      1.1  {
496 marek       1.20     PEG_METHOD_ENTER(
497                          TRC_PROVIDERMANAGER,
498                          "ProviderManager::hasActiveProviders");
499 mark.hamzy  1.9  
500                      AutoMutex lock (_providerTableMutex);
501                  
502                      Boolean fRet = _providers.size() > 0;
503 kumpf       1.2  
504                      PEG_METHOD_EXIT();
505 mark.hamzy  1.9      return fRet;
506 kumpf       1.2  }
507                  
508                  void JMPILocalProviderManager::unloadIdleProviders()
509                  {
510                      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
511                          "ProviderManager::unloadIdleProviders");
512                  
513 kumpf       1.16     try
514                      {
515                          AutoMutex lock(_providerTableMutex);
516 mark.hamzy  1.9  
517 kumpf       1.16         _provider_ctrl(UNLOAD_IDLE_PROVIDERS, this, (void *)0);
518                      }
519                      catch(...)
520 kumpf       1.2      {
521 marek       1.18         PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
522 kumpf       1.16             "Caught unexpected exception from UNLOAD_IDLE_PROVIDERS.");
523 kumpf       1.2      }
524 mark.hamzy  1.9  
525 schuur      1.1      PEG_METHOD_EXIT();
526                  }
527                  
528 carolann.graves 1.8  Array <JMPIProvider *>
529                      JMPILocalProviderManager::getIndicationProvidersToEnable ()
530                      {
531                          PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
532                              "JMPILocalProviderManager::getIndicationProvidersToEnable");
533                      
534                          Array <JMPIProvider *> enableProviders;
535                      
536                          try
537                          {
538                              AutoMutex lock (_providerTableMutex);
539                      
540 marek           1.20         PEG_TRACE((
541                                  TRC_PROVIDERMANAGER,
542                                  Tracer::LEVEL4,
543                                  "Number of providers in _providers table = %d",
544                                  _providers.size ()));
545 mark.hamzy      1.9  
546 carolann.graves 1.8          //
547                              // Iterate through the _providers table
548                              //
549                              for (ProviderTable::Iterator i = _providers.start (); i != 0; i++)
550                              {
551                                  //
552                                  //  Enable any indication provider with current subscriptions
553                                  //
554                                  JMPIProvider * provider = i.value ();
555                                  if (provider->testSubscriptions ())
556                                  {
557                                      enableProviders.append (provider);
558                                  }
559                              }
560                          }
561                          catch (CIMException & e)
562                          {
563 thilo.boehm     1.24         PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, "CIMException: %s",
564                                  (const char*)e.getMessage().getCString()));
565 carolann.graves 1.8      }
566                          catch (Exception & e)
567                          {
568 thilo.boehm     1.24         PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, "Exception: %s",
569                                  (const char*)e.getMessage().getCString()));
570 carolann.graves 1.8      }
571                          catch (...)
572                          {
573 marek           1.23         PEG_TRACE_CSTRING (TRC_DISCARDED_DATA, Tracer::LEVEL1,
574 carolann.graves 1.8              "Unexpected error in getIndicationProvidersToEnable");
575                          }
576                      
577 marek           1.18     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
578 carolann.graves 1.8          "Number of indication providers to enable = %d",
579 marek           1.18         enableProviders.size ()));
580 carolann.graves 1.8  
581                          PEG_METHOD_EXIT ();
582                          return enableProviders;
583                      }
584                      
585                      
586 schuur          1.1  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2