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); } }