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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2