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 mark.hamzy 1.9 int JMPILocalProviderManager::trace=0;
48
49 #ifdef PEGASUS_DEBUG
50 #define DDD(x) if (JMPILocalProviderManager::trace) x;
51 #else
52 #define DDD(x)
53 #endif
54
|
55 schuur 1.1 JMPILocalProviderManager::JMPILocalProviderManager(void)
|
56 r.kieninger 1.19 : _idle_timeout(PEGASUS_PROVIDER_IDLE_TIMEOUT_SECONDS)
|
57 schuur 1.1 {
|
58 mark.hamzy 1.9 #ifdef PEGASUS_DEBUG
59 if (getenv("PEGASUS_JMPI_TRACE"))
60 JMPILocalProviderManager::trace=1;
61 else
62 JMPILocalProviderManager::trace=0;
63 #else
64 JMPILocalProviderManager::trace=0;
65 #endif
|
66 schuur 1.1 }
67
68 JMPILocalProviderManager::~JMPILocalProviderManager(void)
69 {
70 Uint32 ccode;
71
72 _provider_ctrl(UNLOAD_ALL_PROVIDERS, this, &ccode);
73 }
74
|
75 marek 1.20 Sint32 JMPILocalProviderManager::_provider_ctrl(
76 CTRL code,
77 void *parm,
78 void *ret)
|
79 schuur 1.1 {
80 static Uint32 quantum;
81 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "_provider_ctrl");
82
83 Sint32 ccode = 0;
84 CTRL_STRINGS *parms = reinterpret_cast<CTRL_STRINGS *>(parm);
85
86 switch(code)
87 {
88
89 case GET_PROVIDER:
90 {
|
91 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
92 mark.hamzy 1.9 Tracer::LEVEL2,
93 "_provider_ctrl::GET_PROVIDER");
94
95 String providerName = *(parms->providerName);
96 String moduleFileName = *(parms->fileName);
97 String interfaceName = *(parms->interfaceName);
98
99 DDD(PEGASUS_STD(cout)
|
100 marek 1.20 <<"--- JMPILocalProviderManager::_provider_ctrl:"
101 " GET_PROVIDER providerName = "
|
102 mark.hamzy 1.9 <<providerName
|
103 mark.hamzy 1.11 <<", moduleFileName = "
104 <<moduleFileName
105 <<", interfaceName = "
106 <<interfaceName
|
107 mark.hamzy 1.9 <<PEGASUS_STD(endl));
|
108 schuur 1.1
|
109 mark.hamzy 1.11 if (providerName.size () == 0)
110 {
111 throw NullPointer();
112 }
113
|
114 schuur 1.1 JMPIProvider::OpProviderHolder* ph =
|
115 mark.hamzy 1.9 reinterpret_cast< JMPIProvider::OpProviderHolder* >( ret );
116 JMPIProviderModule *newModule = NULL;
117 JMPIProviderModule *module = NULL;
118 JMPIProvider *newProvider = NULL;
119 JMPIProvider *provider = NULL;
120 ProviderVector base;
|
121 schuur 1.1
122 try
123 {
|
124 mark.hamzy 1.12 AutoMutex lock (_providerTableMutex);
125
126 if (true == _providers.lookup(providerName, provider))
|
127 mark.hamzy 1.9 {
|
128 mark.hamzy 1.12 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
129 Tracer::LEVEL4,
130 "Found JMPIProvider "
131 + providerName
132 + " in JMPIProvider Manager Cache");
133 DDD(PEGASUS_STD(cout)
134 <<"--- JMPILocalProviderManager::_provider_ctrl: Found "
135 <<providerName
136 <<" in JMPIProvider Manager Cache"
137 <<PEGASUS_STD(endl));
138 DDD(PEGASUS_STD(cout)
139 <<"--- JMPILocalProviderManager::_provider_ctrl:"
140 " setting provider to "
141 <<PEGASUS_STD(hex)
|
142 mark.hamzy 1.17 <<(long)provider
|
143 mark.hamzy 1.12 <<PEGASUS_STD(dec)
144 <<PEGASUS_STD(endl));
|
145 schuur 1.1
|
146 mark.hamzy 1.12 ph->SetProvider(provider);
|
147 mark.hamzy 1.9
|
148 mark.hamzy 1.12 ///////////////////ph->GetProvider().update_idle_timer();
149 break;
150 }
|
151 mark.hamzy 1.9
|
152 mark.hamzy 1.12 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
153 Tracer::LEVEL4,
154 "Creating JMPIProvider " + providerName );
155 DDD(PEGASUS_STD(cout)
156 <<"--- JMPILocalProviderManager::_provider_ctrl: Creating "
157 <<providerName
158 <<PEGASUS_STD(endl));
|
159 mark.hamzy 1.9
|
160 mark.hamzy 1.12 if (false == _modules.lookup(moduleFileName, module))
161 {
162 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
163 Tracer::LEVEL4,
164 "Creating JMPIProvider Module "
165 + moduleFileName );
166 DDD(PEGASUS_STD(cout)
167 <<"--- JMPILocalProviderManager::_provider_ctrl: "
168 "Creating module "
169 <<moduleFileName
170 <<PEGASUS_STD(endl));
|
171 mark.hamzy 1.9
|
172 mark.hamzy 1.12 newModule = new JMPIProviderModule(moduleFileName,
173 interfaceName);
|
174 mark.hamzy 1.9
|
175 mark.hamzy 1.12 if (0 == newModule)
176 {
|
177 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
178 mark.hamzy 1.12 Tracer::LEVEL4,
179 "new JMPIProviderModule is NULL!");
180 DDD(PEGASUS_STD(cout)
181 <<"--- JMPILocalProviderManager::_provider_ctrl:"
182 " new JMPIProviderModule is NULL!"
183 <<PEGASUS_STD(endl));
|
184 mark.hamzy 1.9
|
185 mark.hamzy 1.12 throw NullPointer();
186 }
|
187 mark.hamzy 1.9
|
188 mark.hamzy 1.12 module = newModule;
|
189 mark.hamzy 1.9
|
190 mark.hamzy 1.12 _modules.insert(moduleFileName, module);
191 }
192 else
193 {
194 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
195 Tracer::LEVEL4,
196 "Using Cached JMPIProvider Module "
197 + moduleFileName);
198 DDD(PEGASUS_STD(cout)
199 <<"--- JMPILocalProviderManager::_provider_ctrl: "
200 "Using cached "
201 <<moduleFileName
202 <<PEGASUS_STD(endl));
|
203 mark.hamzy 1.9 }
204
205 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
206 Tracer::LEVEL4,
207 "Loading/Linking JMPIProvider Module "
208 + moduleFileName );
209 DDD(PEGASUS_STD(cout)
210 <<"--- JMPILocalProviderManager::_provider_ctrl:"
211 " Loading/Linking module "
212 <<moduleFileName
213 <<PEGASUS_STD(endl));
214
215 try
216 {
217 base = module->load(moduleFileName);
218 }
219 catch(...)
220 {
221 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
222 Tracer::LEVEL4,
223 "Exception caught Loading/Linking"
224 mark.hamzy 1.9 " JMPIProvider Module "
225 + moduleFileName );
226 DDD(PEGASUS_STD(cout)
227 <<"--- JMPILocalProviderManager::_provider_ctrl: "
228 "Exception caught Loading/Linking module "
229 <<moduleFileName
230 <<PEGASUS_STD(endl));
231
232 throw;
233 }
234
235 // create provider module
236 newProvider = new JMPIProvider(providerName, module, &base);
237 if (0 == newProvider)
238 {
|
239 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
240 mark.hamzy 1.9 Tracer::LEVEL4,
241 "new JMPIProvider is NULL!");
242 DDD(PEGASUS_STD(cout)
243 <<"--- JMPILocalProviderManager::_provider_ctrl: "
244 "new JMPIProvider is NULL!"
245 <<PEGASUS_STD(endl));
246
247 throw NullPointer();
248 }
249
250 provider = newProvider;
251
252 if (0 == (provider->_cimom_handle = new CIMOMHandle()))
253 {
|
254 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
255 mark.hamzy 1.9 Tracer::LEVEL4,
256 "_cimom_handle is NULL!");
257 DDD(PEGASUS_STD(cout)
258 <<"--- JMPILocalProviderManager::_provider_ctrl:"
259 " _cimom_handle is NULL!"
260 <<PEGASUS_STD(endl));
261
262 throw NullPointer();
263 }
264
265 provider->_quantum = 0;
266
267 {
268 AutoMutex lock(provider->_statusMutex);
269
270 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
271 Tracer::LEVEL2,
272 "Loading JMPIProvider "
273 + provider->_name);
274 DDD(PEGASUS_STD(cout)
275 <<"--- JMPILocalProviderManager::_provider_ctrl:"
276 mark.hamzy 1.9 " Loading "
277 <<provider->_name
278 <<PEGASUS_STD(endl));
279 try
280 {
281 provider->initialize(*(provider->_cimom_handle));
282 }
|
283 marek 1.13 catch(CIMException &cimExcept)
284 {
285 PEG_TRACE_STRING(
286 TRC_PROVIDERMANAGER,
287 Tracer::LEVEL4,
288 "Calling provider->initialize caused exception:"
289 +cimExcept.getMessage()
290 );
291 DDD(PEGASUS_STD(cout)
292 <<"--- JMPILocalProviderManager::_provider_ctrl:"
293 " Exception caught calling initialize!"
294 <<PEGASUS_STD(endl));
295 throw;
|
296 mark.hamzy 1.17 }
|
297 marek 1.13 catch(Exception &except)
298 {
299 PEG_TRACE_STRING(
300 TRC_PROVIDERMANAGER,
301 Tracer::LEVEL4,
302 "Calling provider->initialize caused exception:"
303 +except.getMessage()
304 );
305 DDD(PEGASUS_STD(cout)
306 <<"--- JMPILocalProviderManager::_provider_ctrl:"
307 " Exception caught calling initialize!"
308 <<PEGASUS_STD(endl));
|
309 mark.hamzy 1.17 throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,
|
310 marek 1.13 except.getMessage());
311 }
|
312 mark.hamzy 1.9 catch(...)
313 {
|
314 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
315 mark.hamzy 1.9 Tracer::LEVEL4,
316 "Exception caught calling initialize!");
317 DDD(PEGASUS_STD(cout)
318 <<"--- JMPILocalProviderManager::_provider_ctrl:"
319 " Exception caught calling initialize!"
320 <<PEGASUS_STD(endl));
321
322 throw UninitializedObjectException();
323 }
324 }
|
325 mark.hamzy 1.12
326 ///////////////provider->update_idle_timer();
327
328 _providers.insert(providerName, provider);
|
329 mark.hamzy 1.9 }
330 catch (...)
331 {
332 if (newModule)
333 {
334 _modules.remove(moduleFileName);
335 }
336
337 delete newModule;
338
339 if (newProvider)
340 {
341 delete newProvider->_cimom_handle;
342 }
343
344 delete newProvider;
345
346 throw;
347 }
348
349 DDD(PEGASUS_STD(cout)
350 mark.hamzy 1.9 <<"--- JMPILocalProviderManager::_provider_ctrl:"
351 "setting provider to "
352 <<PEGASUS_STD(hex)
|
353 mark.hamzy 1.17 <<(long)provider
|
354 mark.hamzy 1.9 <<PEGASUS_STD(dec)
355 <<PEGASUS_STD(endl));
|
356 schuur 1.1
|
357 mark.hamzy 1.9 ph->SetProvider( provider );
|
358 schuur 1.1 break;
359 }
360
361 case UNLOAD_PROVIDER:
|
362 mark.hamzy 1.9 {
363 DDD(PEGASUS_STD(cout)
364 <<"--- JMPILocalProviderManager::_provider_ctrl: "
365 "UNLOAD_PROVIDER"
366 <<PEGASUS_STD(endl));
367 break;
|
368 schuur 1.1 }
369
370 case LOOKUP_PROVIDER:
371 {
|
372 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
373 mark.hamzy 1.9 Tracer::LEVEL2,
374 "_provider_ctrl::LOOKUP_PROVIDER");
375 DDD(PEGASUS_STD(cout)
376 <<"--- JMPILocalProviderManager::_provider_ctrl: "
377 "LOOKUP_PROVIDER "
378 <<*(parms->providerName)
379 <<PEGASUS_STD(endl));
380
381 AutoMutex lock (_providerTableMutex);
382
383 if (true == _providers.lookup(*(parms->providerName),
384 *(reinterpret_cast<JMPIProvider * *>(ret))))
385 {
386 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
387 Tracer::LEVEL4,
388 "Found JMPIProvider in cache: "
389 + *(parms->providerName));
|
390 schuur 1.1
391 }
392 else
393 {
|
394 mark.hamzy 1.9 PEG_TRACE_STRING(TRC_PROVIDERMANAGER,
395 Tracer::LEVEL4,
396 "Could not find JMPIProvider in cache: "
397 + *(parms->providerName));
|
398 schuur 1.1 ccode = -1;
399 }
400
401 break;
402 }
403
404 case LOOKUP_MODULE:
405 {
|
406 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
407 mark.hamzy 1.9 Tracer::LEVEL2,
408 "_provider_ctrl::LOOKUP_MODULE");
409 DDD(PEGASUS_STD(cout)
410 <<"--- JMPILocalProviderManager::_provider_ctrl: "
411 "LOOKUP_MODULE "
412 <<*(parms->fileName)
413 <<PEGASUS_STD(endl));
|
414 schuur 1.1
|
415 mark.hamzy 1.9 AutoMutex lock (_providerTableMutex);
|
416 schuur 1.1
|
417 mark.hamzy 1.9 if (false == _modules.lookup(*(parms->fileName),
|
418 schuur 1.1 *(reinterpret_cast<JMPIProviderModule * *>(ret))))
419 {
420 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
421 "Could not find JMPIProvider Module in cache: " +
422 *(parms->fileName));
423 ccode = -1;
424 }
425
426 break;
427 }
428
429 case INSERT_PROVIDER:
430 {
|
431 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
432 mark.hamzy 1.9 Tracer::LEVEL2,
433 "_provider_ctrl::INSERT_PROVIDER");
434 DDD(PEGASUS_STD(cout)
435 <<"--- JMPILocalProviderManager::_provider_ctrl: "
436 "INSERT_PROVIDER "
437 <<*(parms->providerName)
438 <<PEGASUS_STD(endl));
439
440 AutoMutex lock (_providerTableMutex);
|
441 schuur 1.1
|
442 mark.hamzy 1.9 if (false == _providers.insert(*(parms->providerName),
443 *reinterpret_cast<JMPIProvider * *>(parm)))
|
444 schuur 1.1 ccode = -1;
445 break;
446 }
|
447 mark.hamzy 1.9
|
448 schuur 1.1 case INSERT_MODULE:
449 {
|
450 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
451 mark.hamzy 1.9 Tracer::LEVEL2,
452 "_provider_ctrl::INSERT_MODULE");
453 DDD(PEGASUS_STD(cout)
454 <<"--- JMPILocalProviderManager::_provider_ctrl: "
455 "INSERT_MODULE "
456 <<*(parms->fileName)
457 <<PEGASUS_STD(endl));
458
459 AutoMutex lock (_providerTableMutex);
460
461 if(false == _modules.insert(*(parms->fileName),
462 *reinterpret_cast<JMPIProviderModule * *>(parm)))
|
463 schuur 1.1 ccode = -1;
464 break;
465 }
|
466 mark.hamzy 1.9
|
467 schuur 1.1 case REMOVE_PROVIDER:
468 {
|
469 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
470 mark.hamzy 1.9 Tracer::LEVEL2,
471 "_provider_ctrl::REMOVE_PROVIDER");
472 DDD(PEGASUS_STD(cout)
473 <<"--- JMPILocalProviderManager::_provider_ctrl: "
474 "REMOVE_PROVIDER "
475 <<*(parms->providerName)
476 <<PEGASUS_STD(endl));
|
477 schuur 1.1
|
478 mark.hamzy 1.9 AutoMutex lock (_providerTableMutex);
479
480 if (false == _providers.remove(*(parms->providerName)))
|
481 schuur 1.1 ccode = -1;
482 break;
483 }
|
484 mark.hamzy 1.9
|
485 schuur 1.1 case REMOVE_MODULE:
486 {
|
487 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,
|
488 mark.hamzy 1.9 Tracer::LEVEL2,
489 "_provider_ctrl::REMOVE_MODULE");
490 DDD(PEGASUS_STD(cout)
491 <<"--- JMPILocalProviderManager::_provider_ctrl: REMOVE_MODULE "
492 <<*(parms->fileName)
493 <<PEGASUS_STD(endl));
|
494 schuur 1.1
|
495 mark.hamzy 1.9 AutoMutex lock (_providerTableMutex);
496
497 if (false == _modules.remove(*(parms->fileName)))
|
498 schuur 1.1 ccode = -1;
499 break;
500 }
501
502 case UNLOAD_ALL_PROVIDERS:
|
503 schuur 1.4 {
|
504 mark.hamzy 1.9 DDD(PEGASUS_STD(cout)
505 <<"--- JMPILocalProviderManager::_provider_ctrl: "
506 "UNLOAD_ALL_PROVIDERS"
507 <<PEGASUS_STD(endl));
508
|
509 schuur 1.4 JMPIjvm::destroyJVM();
|
510 mark.hamzy 1.9 break;
511 }
|
512 schuur 1.4
|
513 schuur 1.1 case UNLOAD_IDLE_PROVIDERS:
|
514 mark.hamzy 1.9 {
515 DDD(PEGASUS_STD(cout)
516 <<"--- JMPILocalProviderManager::_provider_ctrl: "
517 "UNLOAD_IDLE_PROVIDERS"
518 <<PEGASUS_STD(endl));
519 break;
|
520 schuur 1.1 }
521
522 case UNLOAD_IDLE_MODULES:
|
523 mark.hamzy 1.9 {
524 DDD(PEGASUS_STD(cout)
525 <<"--- JMPILocalProviderManager::_provider_ctrl: "
526 "UNLOAD_IDLE_MODULES"
527 <<PEGASUS_STD(endl));
528 break;
|
529 schuur 1.1 }
530
531 default:
|
532 mark.hamzy 1.9 {
533 DDD(PEGASUS_STD(cout)
534 <<"--- JMPILocalProviderManager::_provider_ctrl: unknown! "
535 <<code
536 <<PEGASUS_STD(endl));
537 ccode = -1;
538 break;
539 }
|
540 schuur 1.1 }
541 PEG_METHOD_EXIT();
542 return(ccode);
543 }
544
545 JMPIProvider * JMPILocalProviderManager::_getResolver
546 (const String & fileName, const String & interfaceType)
547 {
548 JMPIProvider *pr;
549 String id(interfaceType+String("::")+fileName);
550 if (true == _resolvers.lookup(id,pr)) {
551 return pr;
552 }
553 return NULL;
554 }
|
555 mark.hamzy 1.9
|
556 schuur 1.1 JMPIProvider::OpProviderHolder JMPILocalProviderManager::getProvider(
557 const String & fileName,
558 const String & providerName,
559 const String & interfaceName)
560 {
561 JMPIProvider::OpProviderHolder ph;
562 CTRL_STRINGS strings;
563 Sint32 ccode;
564 strings.fileName = &fileName;
565 strings.providerName = &providerName;
566 strings.interfaceName = &interfaceName;
567
|
568 mark.hamzy 1.9 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::getProvider");
569
|
570 schuur 1.1 try {
571 ccode = _provider_ctrl( GET_PROVIDER, &strings, &ph );
572 }
|
573 mark.hamzy 1.9 catch (const Exception &e) {
574 DDD(PEGASUS_STD(cout)
575 <<"--- JMPILocalProviderManager::getProvider: loading proxy: "
576 <<e.getMessage()
577 <<PEGASUS_STD(endl));
578 PEG_METHOD_EXIT();
|
579 schuur 1.1 throw;
|
580 mark.hamzy 1.9 }
|
581 schuur 1.1 catch(...) {
|
582 mark.hamzy 1.9 DDD(PEGASUS_STD(cout)
583 <<"--- JMPILocalProviderManager::getProvider: catch (...) "
584 <<PEGASUS_STD(endl));
|
585 schuur 1.1 PEG_METHOD_EXIT();
586 throw;
587 }
588
589 PEG_METHOD_EXIT();
590 return(ph);
591 }
592
593 void JMPILocalProviderManager::unloadProvider(
594 const String & fileName,
595 const String & providerName)
596 {
597 CTRL_STRINGS strings;
598 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::unloadProvider");
599 strings.fileName = &fileName;
600 strings.providerName = &providerName;
601 _provider_ctrl(UNLOAD_PROVIDER, &strings, (void *)0);
602 PEG_METHOD_EXIT();
603 }
604
605 void JMPILocalProviderManager::shutdownAllProviders(void)
606 schuur 1.1 {
|
607 marek 1.20 PEG_METHOD_ENTER(
608 TRC_PROVIDERMANAGER,
609 "ProviderManager::shutdownAllProviders");
|
610 schuur 1.1 _provider_ctrl(UNLOAD_ALL_PROVIDERS, (void *)this, (void *)0);
611 PEG_METHOD_EXIT();
612 }
613
614
|
615 kumpf 1.2 Boolean JMPILocalProviderManager::hasActiveProviders()
|
616 schuur 1.1 {
|
617 marek 1.20 PEG_METHOD_ENTER(
618 TRC_PROVIDERMANAGER,
619 "ProviderManager::hasActiveProviders");
|
620 mark.hamzy 1.9
621 AutoMutex lock (_providerTableMutex);
622
623 Boolean fRet = _providers.size() > 0;
|
624 kumpf 1.2
625 PEG_METHOD_EXIT();
|
626 mark.hamzy 1.9 return fRet;
|
627 kumpf 1.2 }
628
629 void JMPILocalProviderManager::unloadIdleProviders()
630 {
631 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
632 "ProviderManager::unloadIdleProviders");
633
|
634 kumpf 1.16 try
635 {
636 AutoMutex lock(_providerTableMutex);
|
637 mark.hamzy 1.9
|
638 kumpf 1.16 _provider_ctrl(UNLOAD_IDLE_PROVIDERS, this, (void *)0);
639 }
640 catch(...)
|
641 kumpf 1.2 {
|
642 marek 1.18 PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
|
643 kumpf 1.16 "Caught unexpected exception from UNLOAD_IDLE_PROVIDERS.");
|
644 kumpf 1.2 }
|
645 mark.hamzy 1.9
|
646 schuur 1.1 PEG_METHOD_EXIT();
647 }
648
|
649 carolann.graves 1.8 Array <JMPIProvider *>
650 JMPILocalProviderManager::getIndicationProvidersToEnable ()
651 {
652 PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
653 "JMPILocalProviderManager::getIndicationProvidersToEnable");
654
655 Array <JMPIProvider *> enableProviders;
656
657 try
658 {
659 AutoMutex lock (_providerTableMutex);
660
|
661 marek 1.20 PEG_TRACE((
662 TRC_PROVIDERMANAGER,
663 Tracer::LEVEL4,
664 "Number of providers in _providers table = %d",
665 _providers.size ()));
|
666 mark.hamzy 1.9
|
667 carolann.graves 1.8 //
668 // Iterate through the _providers table
669 //
670 for (ProviderTable::Iterator i = _providers.start (); i != 0; i++)
671 {
672 //
673 // Enable any indication provider with current subscriptions
674 //
675 JMPIProvider * provider = i.value ();
676 if (provider->testSubscriptions ())
677 {
678 enableProviders.append (provider);
679 }
680 }
681 }
682 catch (CIMException & e)
683 {
684 PEG_TRACE_STRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,
685 "CIMException: " + e.getMessage ());
686 }
687 catch (Exception & e)
688 carolann.graves 1.8 {
689 PEG_TRACE_STRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,
690 "Exception: " + e.getMessage ());
691 }
692 catch (...)
693 {
|
694 marek 1.18 PEG_TRACE_CSTRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,
|
695 carolann.graves 1.8 "Unexpected error in getIndicationProvidersToEnable");
696 }
697
|
698 marek 1.18 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
|
699 carolann.graves 1.8 "Number of indication providers to enable = %d",
|
700 marek 1.18 enableProviders.size ()));
|
701 carolann.graves 1.8
702 PEG_METHOD_EXIT ();
703 return enableProviders;
704 }
705
706
|
707 schuur 1.1 PEGASUS_NAMESPACE_END
|