void IndicationHandlerService::handleEnqueue(Message* message) { PEGASUS_ASSERT(message != 0); CIMMessage* tmp = dynamic_cast<CIMMessage *>(message); AutoPtr<CIMMessage> cimMessage(tmp); PEGASUS_ASSERT(cimMessage.get() != 0); // Set the client's requested language into this service thread. // This will allow functions in this service to return messages // in the correct language. cimMessage->updateThreadLanguages(); switch (message->getType()) { case CIM_HANDLE_INDICATION_REQUEST_MESSAGE: { AutoPtr<CIMHandleIndicationResponseMessage> response( _handleIndication( (CIMHandleIndicationRequestMessage*) message)); SendForget(response.get()); response.release(); break; } default: PEGASUS_ASSERT(0); break; } }
void IndicationHandlerService::handleEnqueue(Message* message) { if (!message) { return; } // l10n // Set the client's requested language into this service thread. // This will allow functions in this service to return messages // in the correct language. AutoPtr<CIMMessage> msg(dynamic_cast<CIMMessage *>(message)); if (msg.get() != NULL) { if (msg->thread_changed()) { AutoPtr<AcceptLanguages> langs(new AcceptLanguages(((AcceptLanguageListContainer)msg->operationContext.get(AcceptLanguageListContainer::NAME)).getLanguages())); Thread::setLanguages(langs.get()); langs.release(); } } else { Thread::clearLanguages(); } switch (message->getType()) { case CIM_HANDLE_INDICATION_REQUEST_MESSAGE: { AutoPtr<CIMHandleIndicationResponseMessage> response(_handleIndication( (CIMHandleIndicationRequestMessage*) message)); SendForget(response.get()); response.release(); break; } default: Tracer::trace(TRC_DISCARDED_DATA, Tracer::LEVEL2, "IndicationHandlerService::handleEnqueue got unexpected " "message type '%u'", message->getType()); break; } }
void IndicationHandlerService::_handle_async_request(AsyncRequest *req) { if ( req->getType() == async_messages::CIMSERVICE_STOP ) { req->op->processing(); handle_CimServiceStop(static_cast<CimServiceStop *>(req)); } else if ( req->getType() == async_messages::ASYNC_LEGACY_OP_START ) { req->op->processing(); AutoPtr<Message> legacy(static_cast<AsyncLegacyOperationStart *>(req)->get_action()); //PEP 101 if (legacy->getType() == CIM_HANDLE_INDICATION_REQUEST_MESSAGE) { AutoPtr<Message> legacy_response(_handleIndication( (CIMHandleIndicationRequestMessage*) legacy.get())); //PEP 101 legacy.release(); AutoPtr<AsyncLegacyOperationResult> async_result(new AsyncLegacyOperationResult( req->getKey(), req->getRouting(), req->op, legacy_response.get())); //PEP 101 legacy_response.release(); async_result.release(); _complete_op_node(req->op, ASYNC_OPSTATE_COMPLETE, 0, 0); } else { Tracer::trace(TRC_DISCARDED_DATA, Tracer::LEVEL2, "IndicationHandlerService::_handle_async_request got " "unexpected legacy message type '%u'", legacy->getType()); _make_response(req, async_results::CIM_NAK); } } else { Base::_handle_async_request(req); } }
void IndicationHandlerService::_handle_async_request(AsyncRequest* req) { if (req->getType() == ASYNC_CIMSERVICE_STOP) { handle_CimServiceStop(static_cast<CimServiceStop *>(req)); } else if (req->getType() == ASYNC_ASYNC_LEGACY_OP_START) { AutoPtr<Message> legacy( static_cast<AsyncLegacyOperationStart *>(req)->get_action()); if (legacy->getType() == CIM_HANDLE_INDICATION_REQUEST_MESSAGE) { AutoPtr<Message> legacy_response(_handleIndication( (CIMHandleIndicationRequestMessage*) legacy.get())); legacy.release(); AutoPtr<AsyncLegacyOperationResult> async_result( new AsyncLegacyOperationResult( req->op, legacy_response.get())); legacy_response.release(); async_result.release(); _complete_op_node(req->op); } else { PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL2, "IndicationHandlerService::_handle_async_request got " "unexpected legacy message type '%u'", legacy->getType())); _make_response(req, async_results::CIM_NAK); } } else { Base::_handle_async_request(req); } }