SCMOClass ProviderAgent::_scmoClassCache_GetClass( const CIMNamespaceName& nameSpace, const CIMName& className) { PEG_METHOD_ENTER(TRC_PROVIDERAGENT, "ProviderAgent::_scmoClassCache_GetClass"); // create message ProvAgtGetScmoClassRequestMessage* message = new ProvAgtGetScmoClassRequestMessage( XmlWriter::getNextMessageId(), nameSpace, className, QueueIdStack()); // Send the request for the SCMOClass to the server _providerAgent->_writeResponse(message); delete message; // Wait for semaphore signaled by _readAndProcessRequest() if (!_scmoClassDelivered.time_wait( PEGASUS_DEFAULT_CLIENT_TIMEOUT_MILLISECONDS)) { PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, "Timed-out waiting for SCMOClass for " "Name Space Name '%s' Class Name '%s'", (const char*)nameSpace.getString().getCString(), (const char*)className.getString().getCString())); PEG_METHOD_EXIT(); return SCMOClass("",""); } if ( 0 == _transferSCMOClass) { PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, "No SCMOClass received for Name Space Name '%s' Class Name '%s'", (const char*)nameSpace.getString().getCString(), (const char*)className.getString().getCString())); PEG_METHOD_EXIT(); return SCMOClass("",""); } // Create a local copy. SCMOClass ret = SCMOClass(*_transferSCMOClass); // Delete the transferred instance. delete _transferSCMOClass; _transferSCMOClass = 0; PEG_METHOD_EXIT(); return ret; }
SCMOClass CIMServer::_scmoClassCache_GetClass( const CIMNamespaceName& nameSpace, const CIMName& className) { CIMClass cc; PEG_METHOD_ENTER(TRC_SERVER, "CIMServer::_scmoClassCache_GetClass()"); try { cc = _cimserver->_repository->getClass( nameSpace, className, false, // localOnly true, // includeQualifiers true, // includeClassOrigin CIMPropertyList()); } catch (Exception& e) { PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL2, "The class '%s' in the name space '%s' was not found. " "The repository throws the following exception: %s", (const char*)className.getString().getCString(), (const char*)nameSpace.getString().getCString(), (const char*)e.getMessage().getCString())); // Return a empty class. PEG_METHOD_EXIT(); return SCMOClass("",""); } if (cc.isUninitialized()) { // The requested class was not found ! // Return a empty class. PEG_METHOD_EXIT(); return SCMOClass("",""); } PEG_METHOD_EXIT(); return SCMOClass(cc,(const char*)nameSpace.getString().getCString()); }