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 kumpf 1.27 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
|
64 thilo.boehm 1.21 "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 kumpf 1.27
|
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 kumpf 1.27 catch (const Exception &e)
|
452 thilo.boehm 1.21 {
|
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
|