void CIMOperationResponseEncoder::enqueue(Message* message) { try { handleEnqueue(message); } catch(PEGASUS_STD(bad_alloc)&) { MessageLoaderParms parms( "Server.CIMOperationResponseEncoder.OUT_OF_MEMORY", "A System error has occurred. Please retry the CIM Operation " "at a later time."); Logger::put_l( Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE, parms); CIMResponseMessage* response = dynamic_cast<CIMResponseMessage*>(message); Uint32 queueId = response->queueIds.top(); MessageQueue* queue = MessageQueue::lookup(queueId); HTTPConnection* httpQueue = dynamic_cast<HTTPConnection*>(queue); PEGASUS_ASSERT(httpQueue); // Handle internal error on this connection. httpQueue->handleInternalServerError( response->getIndex(), response->isComplete()); delete message; } }
void WsmResponseEncoder::enqueue(WsmResponse* response) { PEG_METHOD_ENTER(TRC_WSMSERVER, "WsmResponseEncoder::enqueue()"); PEGASUS_ASSERT(response); PEG_TRACE((TRC_WSMSERVER, Tracer::LEVEL4, "WsmResponseEncoder::enqueue()- " "response->getHttpCloseConnect() returned %d", response->getHttpCloseConnect())); try { switch (response->getType()) { case WS_TRANSFER_GET: _encodeWxfGetResponse((WxfGetResponse*) response); break; case WS_TRANSFER_PUT: _encodeWxfPutResponse((WxfPutResponse*) response); break; case WS_TRANSFER_CREATE: _encodeWxfCreateResponse((WxfCreateResponse*) response); break; case WS_TRANSFER_DELETE: _encodeWxfDeleteResponse((WxfDeleteResponse*) response); break; case WS_ENUMERATION_RELEASE: _encodeWsenReleaseResponse((WsenReleaseResponse*) response); break; case WSM_FAULT: _encodeWsmFaultResponse((WsmFaultResponse*) response); break; case SOAP_FAULT: _encodeSoapFaultResponse((SoapFaultResponse*) response); break; case WS_INVOKE: _encodeWsInvokeResponse((WsInvokeResponse*)response); break; case WS_ENUMERATION_ENUMERATE: case WS_ENUMERATION_PULL: // These cases are handled specially to allow for the message // contents to be tuned according to the MaxEnvelopeSize value. default: // Unexpected message type PEGASUS_ASSERT(0); break; } } catch (PEGASUS_STD(bad_alloc)&) { MessageLoaderParms parms( "WsmServer.WsmResponseEncoder.OUT_OF_MEMORY", "A System error has occurred. Please retry the " "WS-Management operation at a later time."); Logger::put_l( Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE, parms); MessageQueue* queue = MessageQueue::lookup(response->getQueueId()); HTTPConnection* httpQueue = dynamic_cast<HTTPConnection*>(queue); PEGASUS_ASSERT(httpQueue); // Handle the internal server error on this connection. httpQueue->handleInternalServerError(0, true); } PEG_METHOD_EXIT(); }