다음을 통해 공유


대화 상태 변경

대화 상태가 변경되면 다음과 같은 결과가 발생할 수 있습니다.

  • 로컬 TP에서 발급한 동사입니다.

  • 파트너 TP에서 발급한 동사입니다.

  • 오류 조건입니다.

    다음 예제에서는 APPC 동사가 대화 상태를 SEND에서 RECEIVE로, RECEIVE에서 SEND로 변경하는 방법을 보여 줍니다.

비고

모든 TP는 호출 TP(대화를 시작한 TP) 또는 호출 가능한 TP(대화 시작 요청에 응답한 TP)이든 관계없이 데이터를 보내거나 받을 수 있습니다.

이 예제에서는 APPC 동사가 대화 상태를 변경하는 방법을 보여 줍니다. 이 표에서 각 대화 상태는 굵게 표시되고 해당 상태에 있는 동안 사용되는 APPC 동사 앞에 나타납니다.

호출 TP에 의해 발급됨 호출 가능한 TP에서 발급됨
작업 시작됨
대화 상태: RESET
MC_ALLOCATE
(동기화 수준=AP_CONFIRM_SYNC_LEVL)
대화 상태: SEND
데이터 전송 명령 (MC_SEND_DATA)
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
대화 상태: RESET
수령_할당
대화 상태: RECEIVE
MC_수신_및_대기
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_수신_및_대기
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
대화 상태: CONFIRM_SEND
MC_CONFIRMED
대화 상태: SEND
MC_SEND_DATA
MC_CONFIRM
대화 상태: RECEIVE
MC_수신_및_대기
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_WHAT_RECEIVED)
대화 상태: 확인
MC_전송 요청
MC_CONFIRMED
(rts_rcvd=AP_YES)
수신 준비하기
(ptr_type=AP_SYNC_LEVEL)
대화 상태: RECEIVE
MC_RECEIVE_AND_WAIT (수신 및 대기)
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
대화 상태: CONFIRM_SEND
MC_CONFIRMED
대화 상태: SEND
MC_SEND_DATA
MC_DEALLOCATE
(dealloc_type=AP_SYNC_LEVEL)
대화 상태: RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_DEALLOCATE)
대화 상태: 할당 취소 확인(CONFIRM_DEALLOCATE)
MC_CONFIRMED
대화 상태: RESET 대화 상태: RESET
종료됨 TP_ENDED

초기 상태

대화가 할당되기 전에 두 TP의 상태는 리셋됩니다.

이 예제에서 대화가 할당된 후 초기 상태는 호출하는 TP에 대한 SEND이고, 호출 가능한 TP에 대한 RECEIVE입니다.

RECEIVE 상태로 변경

MC_PREPARE_TO_RECEIVE TP가 대화를 SEND에서 RECEIVE 상태로 변경할 수 있습니다. 이 동사:

  • 로컬 LU의 송신 버퍼를 비웁니다.

  • 수신 동사의 what_rcvd 매개 변수를 통해 파트너 TP에 AP_CONFIRM_SEND 표시기를 보냅니다. 이 표시기는 파트너 TP가 데이터 보내기를 시작하기 전에 MC_CONFIRMED 응답이 예상된다는 것을 파트너 TP에 알려줍니다.

    확인 처리는 다음 조건이 충족될 때 수행됩니다.

  • ptr_type 매개 변수는 AP_SYNC_LEVEL 설정됩니다.

  • 대화의 동기화 수준이 AP_CONFIRM_SYNC_LEVEL 설정됩니다.

    확인 처리에 대한 자세한 내용은 확인 처리를 참조하세요.

비고

대화가 SEND 상태인 동안 MC_RECEIVE_AND_WAIT 실행하면 LU의 송신 버퍼가 플러시되고 대화 상태가 RECEIVE로 변경됩니다. 이러한 방식으로 대화 상태를 변경해도 확인 처리는 지원되지 않습니다.

SEND 상태로 변경

MC_REQUEST_TO_SEND 파트너 TP(대화가 SEND 상태인 경우)에 로컬 TP(대화가 RECEIVE 상태)가 데이터를 보내려고 했음을 알릴 수 있습니다. 이 요청은 MC_CONFIRMrts_rcvd 매개 변수를 통해 파트너 TP에 전달됩니다. (rts_rcvd 매개 변수는 MC_SEND_DATA 및 다른 동사 함수에도 반환됩니다.

파트너 TP가 MC_PREPARE_TO_RECEIVE 발급하면 대화 상태가 파트너 TP에 대한 RECEIVE로 변경되므로 로컬 TP가 데이터를 보낼 수 있습니다.

비고

MC_REQUEST_TO_SEND 발급해도 대화의 상태는 변경되지 않습니다. 송신 요청을 받으면 파트너 TP가 대화 상태를 변경할 필요가 없습니다. 요청을 무시할 수 있습니다.