mms_sender_states.def

来自「mms client」· DEF 代码 · 共 276 行

DEF
276
字号
/* * mms_sender_sates.def - states for MMS message receiver session state machines * * Macro calls to generate rows of the state table. See the documentation for * guidance how to use and update these. * * Note that `NULL' state is renamed to `NULL_SESSION' because NULL is * reserved by C. * * Marcel Jansen */STATE_NAME(SEND_NULL_STATE)STATE_NAME(SEND_BEARER_WAITING)STATE_NAME(SEND_CONNECTING)STATE_NAME(SEND_WAITING)STATE_NAME(SEND_DELIVERY_WAITING)ROW(SEND_NULL_STATE,	MMS_Message_Request,	/* no bearer */ ! checkInterface(interface),	{        startbearerservice();        /* start timer to cope with bearer layer not responding */        start_timerTO_A_bearer(sm->timer, sm->machine_id, default_bearerinit_delay);        if (e->http_client != NULL)             /* synchronous request: start timer for the client request */            start_timerTO_Http_Client(sm->timer, sm->machine_id, e->timeout);	},	SEND_BEARER_WAITING)ROW(SEND_NULL_STATE,	MMS_Message_Request,	/* bearer */ checkInterface(interface) && /* use WSP */ wapIpAddress != NULL,	{        /* need to create an address tuple */        sm->addrtuple = getRequestTuple(interface);        /* send connect request */        sendWSPConnectRequest(sm->addrtuple, sm->machine_id);	},	SEND_CONNECTING)ROW(SEND_NULL_STATE,	MMS_Message_Request,	/* bearer */ checkInterface(interface) && /* use HTTP */ wapIpAddress == NULL,	{        sendHTTPMSendReq(sm);	},	SEND_WAITING)ROW(SEND_BEARER_WAITING,	Bearer_Event,	/* use WSP */ wapIpAddress != NULL,	{        /* need to create an address tuple, might rely (for purpose of DNS) on           bearer capacity */        sm->addrtuple = getRequestTuple(interface);        /* send connect request */        sendWSPConnectRequest(sm->addrtuple, sm->machine_id);	},	SEND_CONNECTING)ROW(SEND_BEARER_WAITING,	Bearer_Event,	/* use HTTP */ wapIpAddress == NULL,	{        sendHTTPMSendReq(sm);	},	SEND_WAITING)ROW(SEND_BEARER_WAITING,	TimerTO_A_bearer,	1,	{           long d;        /* Make sure that any ongoing bearer service startups are           cancelled */        stopbearerservice();        /* give the bearer service a bit longer to get going */        d = e->delay;        d = d * 2 < MAX_BEARER_DELAY ? d * 2 : MAX_BEARER_DELAY;                /* TODO may need a delay here */        startbearerservice();        start_timerTO_A_bearer(sm->timer, sm->machine_id, d);	},	SEND_BEARER_WAITING)ROW(SEND_BEARER_WAITING,	TimerTO_Http_Client,	1,	{        /* ran out of time */        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, NULL, NULL, NULL);	},	SEND_NULL_STATE)ROW(SEND_CONNECTING,	S_Connect_Cnf,	1,	{        sendWSPMSendReq(sm);	},	SEND_WAITING)ROW(SEND_CONNECTING,	S_Disconnect_Ind,	/* no bearer */ ! checkInterface(interface),	{        startbearerservice();        start_timerTO_A_bearer(sm->timer, sm->machine_id, default_bearerinit_delay);	},	SEND_BEARER_WAITING)ROW(SEND_CONNECTING,	S_Disconnect_Ind,	/* bearer */ checkInterface(interface),	{        if (sm->addrtuple == NULL)            sm->addrtuple = getRequestTuple(interface);        /* send connect request */        sendWSPConnectRequest(sm->addrtuple, sm->machine_id);	},	SEND_CONNECTING)ROW(SEND_CONNECTING,	Bearer_Lost_Event,	1,	{        startbearerservice();        start_timerTO_A_bearer(sm->timer, sm->machine_id, default_bearerinit_delay);	},	SEND_BEARER_WAITING)ROW(SEND_CONNECTING,	TimerTO_Http_Client,	1,	{        /* ran out of time */        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, NULL, NULL, NULL);        sendWSPDisconnectRequest(sm->machine_id);	},	SEND_NULL_STATE)ROW(SEND_WAITING,	S_Disconnect_Ind,	/* no bearer */ ! checkInterface(interface),	{        startbearerservice();        start_timerTO_A_bearer(sm->timer, sm->machine_id, default_bearerinit_delay);	},	SEND_BEARER_WAITING)ROW(SEND_WAITING,	S_Disconnect_Ind,	/* bearer */ checkInterface(interface),	{        if (sm->addrtuple == NULL)            sm->addrtuple = getRequestTuple(interface);        /* send connect request */        sendWSPConnectRequest(sm->addrtuple, sm->machine_id);	},	SEND_CONNECTING)ROW(SEND_WAITING,	S_MethodInvoke_Cnf,	1,	{        /* ignore */	},	SEND_WAITING)ROW(SEND_WAITING,	S_MethodResult_Ind,	pdu->type == SendConf && sm->mms_send_req->u.MMS_Message_Request.delivery_report == MMS_TRUE_TOKEN /* delivery report requested */,	{        sm->sendconf = pdu;        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, sm->mms_send_req->u.MMS_Message_Request.response_url, pdu, sm);        sendWSPDisconnectRequest(sm->machine_id);	},	SEND_DELIVERY_WAITING)ROW(SEND_WAITING,	S_MethodResult_Ind,	pdu->type == SendConf && sm->mms_send_req->u.MMS_Message_Request.delivery_report != MMS_TRUE_TOKEN /* delivery report not requested */,	{        sm->sendconf = pdu;        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, sm->mms_send_req->u.MMS_Message_Request.response_url, pdu, sm);        sendWSPDisconnectRequest(sm->machine_id);	},	SEND_NULL_STATE)ROW(SEND_WAITING,	HTTP_Request_Completed_Event,	http_status_class(e->status) == HTTP_STATUS_SUCCESSFUL && pdu->type == SendConf && sm->mms_send_req->u.MMS_Message_Request.delivery_report == MMS_TRUE_TOKEN /* delivery report requested */,	{        sm->sendconf = pdu;        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, sm->mms_send_req->u.MMS_Message_Request.response_url, pdu, sm);	},	SEND_DELIVERY_WAITING)ROW(SEND_WAITING,	HTTP_Request_Completed_Event,	http_status_class(e->status) == HTTP_STATUS_SUCCESSFUL && pdu->type == SendConf && sm->mms_send_req->u.MMS_Message_Request.delivery_report != MMS_TRUE_TOKEN /* delivery report not requested */,	{        sm->sendconf = pdu;        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, sm->mms_send_req->u.MMS_Message_Request.response_url, pdu, sm);	},	SEND_NULL_STATE)ROW(SEND_WAITING,	S_MethodAbort_Ind,	1,	{        /* method aborted, try again */        sendWSPMSendReq(sm);	},	SEND_WAITING)ROW(SEND_WAITING,	HTTP_Request_Completed_Event,	http_status_class(e->status) != HTTP_STATUS_SUCCESSFUL,	{        /* try again */        sendHTTPMSendReq(sm);	},	SEND_WAITING)ROW(SEND_WAITING,	Bearer_Lost_Event,	1,	{        startbearerservice();        start_timerTO_A_bearer(sm->timer, sm->machine_id, default_bearerinit_delay);	},	SEND_BEARER_WAITING)ROW(SEND_WAITING,	TimerTO_Http_Client,	1,	{        /* ran out of time */        sendWSPMethodAbort(sm->transaction_id, sm->machine_id);        notifySendClient(sm->mms_send_req->u.MMS_Message_Request.http_client, NULL, NULL, NULL);        sendWSPDisconnectRequest(sm->machine_id);	},	SEND_NULL_STATE)ROW(SEND_DELIVERY_WAITING,	S_Push_Ind,	pdu->type = DeliveryInd,	{        notifySendClientDeliveryReport();	},	NULL_STATE)#undef ROW#undef STATE_NAME

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?