Exemplo n.º 1
0
/****************************************************************************
  Name          : mqa_asapi_unregister
 
  Description   : This routine registers with ASAPi library.
 
  Arguments     : cb - MQA control block
 
  Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
 
  Notes         : None
******************************************************************************/
static void mqa_asapi_unregister(MQA_CB *cb)
{
	ASAPi_OPR_INFO asapi_or;
	uns32 rc = NCSCC_RC_SUCCESS;
	/* Register with ASAPi library */

	asapi_or.type = ASAPi_OPR_UNBIND;

	if ((rc = asapi_opr_hdlr(&asapi_or)) != NCSCC_RC_SUCCESS) {
		m_LOG_MQSV_A(MQA_ASAPi_UNREGISTER_FAILED, NCSFL_LC_MQSV_INIT, NCSFL_SEV_ERROR, rc, __FILE__, __LINE__);
	}

	return;
}
Exemplo n.º 2
0
/****************************************************************************
  Name          : mqa_asapi_unregister
 
  Description   : This routine registers with ASAPi library.
 
  Arguments     : cb - MQA control block
 
  Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
 
  Notes         : None
******************************************************************************/
static void mqa_asapi_unregister(MQA_CB *cb)
{
	ASAPi_OPR_INFO asapi_or;
	uint32_t rc = NCSCC_RC_SUCCESS;
	TRACE_ENTER();

	/* Register with ASAPi library */

	asapi_or.type = ASAPi_OPR_UNBIND;

	if ((rc = asapi_opr_hdlr(&asapi_or)) != NCSCC_RC_SUCCESS) {
		TRACE_2("ASAPi Deregisteration Failed with returncode %d", rc);
	}

	TRACE_LEAVE();
	return;
}
Exemplo n.º 3
0
/****************************************************************************
  Name          : mqa_asapi_register
 
  Description   : This routine registers with ASAPi library.
 
  Arguments     : cb - MQA control block
 
  Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
 
  Notes         : None
******************************************************************************/
static uns32 mqa_asapi_register(MQA_CB *cb)
{
	ASAPi_OPR_INFO asapi_or;
	uns32 rc = NCSCC_RC_SUCCESS;

	/* Register with ASAPi library */

	asapi_or.type = ASAPi_OPR_BIND;
	asapi_or.info.bind.i_indhdlr = mqa_asapi_msghandler;
	asapi_or.info.bind.i_mds_hdl = cb->mqa_mds_hdl;
	asapi_or.info.bind.i_mds_id = NCSMDS_SVC_ID_MQA;
	asapi_or.info.bind.i_my_id = NCS_SERVICE_ID_MQA;
	asapi_or.info.bind.i_mydest = cb->mqa_mds_dest;

	if ((rc = asapi_opr_hdlr(&asapi_or)) != NCSCC_RC_SUCCESS) {
		m_LOG_MQSV_A(MQA_ASAPi_REGISTER_FAILED, NCSFL_LC_MQSV_INIT, NCSFL_SEV_ERROR, rc, __FILE__, __LINE__);
		return NCSCC_RC_FAILURE;
	}
	return NCSCC_RC_SUCCESS;
}
Exemplo n.º 4
0
/****************************************************************************
  Name          : mqa_asapi_register
 
  Description   : This routine registers with ASAPi library.
 
  Arguments     : cb - MQA control block
 
  Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
 
  Notes         : None
******************************************************************************/
static uint32_t mqa_asapi_register(MQA_CB *cb)
{
	ASAPi_OPR_INFO asapi_or;
	uint32_t rc = NCSCC_RC_SUCCESS;
	TRACE_ENTER();

	/* Register with ASAPi library */

	asapi_or.type = ASAPi_OPR_BIND;
	asapi_or.info.bind.i_indhdlr = mqa_asapi_msghandler;
	asapi_or.info.bind.i_mds_hdl = cb->mqa_mds_hdl;
	asapi_or.info.bind.i_mds_id = NCSMDS_SVC_ID_MQA;
	asapi_or.info.bind.i_my_id = NCS_SERVICE_ID_MQA;
	asapi_or.info.bind.i_mydest = cb->mqa_mds_dest;

	if ((rc = asapi_opr_hdlr(&asapi_or)) != NCSCC_RC_SUCCESS) {
		TRACE_2("FAILURE: ASAPi Bind Failed");
		return NCSCC_RC_FAILURE;
	}

	TRACE_LEAVE();
	return NCSCC_RC_SUCCESS;
}
Exemplo n.º 5
0
static uns32 mqa_mds_rcv(MQA_CB *cb, MDS_CALLBACK_RECEIVE_INFO *rcv_info)
{
	uns32 rc = NCSCC_RC_SUCCESS;

	MQSV_EVT *evt = (MQSV_EVT *)rcv_info->i_msg;
	MQP_ASYNC_RSP_MSG *mqa_callbk_info;

	evt->sinfo.ctxt = rcv_info->i_msg_ctxt;
	evt->sinfo.dest = rcv_info->i_fr_dest;
	evt->sinfo.to_svc = rcv_info->i_fr_svc_id;
	if (rcv_info->i_rsp_reqd) {
		evt->sinfo.stype = MDS_SENDTYPE_RSP;
	}

	/* check the event type */
	if (evt->type == MQSV_EVT_MQA_CALLBACK) {
		mqa_callbk_info = m_MMGR_ALLOC_MQP_ASYNC_RSP_MSG;
		if (!mqa_callbk_info) {
			m_LOG_MQSV_A(MQP_ASYNC_RSP_MSG_ALLOC_FAILED, NCSFL_LC_MQSV_INIT, NCSFL_SEV_ERROR, 2, __FILE__,
				     __LINE__);
			return NCSCC_RC_FAILURE;
		}
		memcpy(mqa_callbk_info, &evt->msg.mqp_async_rsp, sizeof(MQP_ASYNC_RSP_MSG));

		/* Stop the timer that was started for this request by matching the invocation
		 * in the timer table. 
		 */
		if ((rc = mqa_stop_and_delete_timer(mqa_callbk_info)) == NCSCC_RC_SUCCESS) {
			/* Put it in place it in the Queue */
			rc = mqsv_mqa_callback_queue_write(cb, evt->msg.mqp_async_rsp.messageHandle, mqa_callbk_info);
			m_LOG_MQSV_A(MQA_STOP_DELETE_TMR_SUCCESS, NCSFL_LC_MQSV_INIT, NCSFL_SEV_INFO, rc, __FILE__,
				     __LINE__);
		} else {
			m_LOG_MQSV_A(MQA_STOP_DELETE_TMR_FAILED, NCSFL_LC_MQSV_INIT, NCSFL_SEV_ERROR, rc, __FILE__,
				     __LINE__);
			if (mqa_callbk_info)
				m_MMGR_FREE_MQP_ASYNC_RSP_MSG(mqa_callbk_info);
		}
		if (evt)
			m_MMGR_FREE_MQA_EVT(evt);
		return rc;
	} else if (evt->type == MQSV_EVT_ASAPI) {
		ASAPi_OPR_INFO opr;

		opr.type = ASAPi_OPR_MSG;
		opr.info.msg.opr = ASAPI_MSG_RECEIVE;
		opr.info.msg.resp = ((MQSV_EVT *)rcv_info->i_msg)->msg.asapi;

		rc = asapi_opr_hdlr(&opr);
		if (rc != NCSCC_RC_SUCCESS)
			m_LOG_MQSV_A(MQA_ASAPi_MSG_RECEIVE_FAILED, NCSFL_LC_MQSV_INIT, NCSFL_SEV_ERROR, rc, __FILE__,
				     __LINE__);
		if (evt)
			m_MMGR_FREE_MQA_EVT(evt);
		return rc;

	} else if (evt->type == MQSV_EVT_MQP_REQ) {
		cb->clm_node_joined = evt->msg.mqp_req.info.clmNotify.node_joined;
		return rc;
	}

	if (evt)
		m_MMGR_FREE_MQA_EVT(evt);

	return NCSCC_RC_FAILURE;
}