다음을 통해 공유


대화 상태 변경(CPI-C)

대화 상태가 변경되면 다음이 발생할 수 있습니다.

  • TP(로컬 트랜잭션 프로그램)에서 수행한 호출입니다.

  • 파트너 TP가 수행한 호출입니다.

  • 오류 조건입니다.

    다음 예제에서는 CPI-C(Common Programming Interface for Communications) 호출이 대화 상태를 SEND에서 RECEIVE로, RECEIVE에서 SEND로 변경하는 방법을 보여 줍니다.

참고

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

이 예제에서는 CPI-C 호출이 대화 상태를 변경하는 방법을 보여줍니다. 이 표에서 각 대화 상태는 굵게 표시되고 해당 상태에 있는 동안 사용되는 CPI-C 호출 앞에 표시됩니다.

호출하는 TP에 의해 발급됨 호출 가능한 TP에서 발급
대화 상태: RESET
Initialize_Conversation
대화 상태: INITIALIZE
Set_Sync_Level
(sync_level=CM_CONFIRM)
할당
대화 상태: SEND
Send_Data
Prepare_to_Receive 대화 상태: RESET
Accept_Conversation
대화 상태: RECEIVE
(status_received= CM_CONFIRM_SEND_RECEIVED)
대화 상태: CONFIRM_SEND
확인
대화 상태: SEND
(return_code=CM_OK) Send_Data
대화 상태: RECEIVE 확인
(status_received= CM_CONFIRM_RECEIVED)
대화 상태: 확인
Request_To_Send
확인됨
대화 상태: RECEIVE (return_code=CM_OK)
(request_to_send_received= CM_REQ_TO_SEND_RECEIVED)
Prepare_To_Receive
Receive
(status_received= CM_CONFIRM_SEND_RECEIVED)
대화 상태: CONFIRM_SEND
확인됨
대화 상태: SEND (return_code=CM_OK)
대화 상태: RECEIVE
Send_Data
할당 취소
Receive
(status_received= CM_CONFIRM_DEALLOC_RECEIVED)
대화 상태:
CONFIRM_DEALLOCATE
확인됨
(return_code=CM_OK) 대화 상태: RESET
대화 상태: RESET

초기 상태

대화가 할당되기 전에 상태는 두 TP에 대해 RESET입니다.

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

RECEIVE 상태로 변경

Prepare_To_Receive 호출을 사용하면 TP가 대화를 SEND에서 RECEIVE 상태로 변경할 수 있습니다. 이 호출은 다음과 같습니다.

  • 로컬 LU의 송신 버퍼를 플러시합니다.

  • 동기화 수준이 CM_CONFIRM 설정되었기 때문에 수신 호출의 status_received 매개 변수를 통해 파트너 TP에 CM_CONFIRM_SEND 표시기를 보냅니다. 이 표시기는 파트너 TP가 데이터 전송을 시작하기 전에 확인된 응답이 예상된다는 것을 파트너 TP에 알릴 수 있습니다.

SEND 상태로 변경

Request_To_Send 호출은 파트너 TP(대화가 SEND 상태임)에 로컬 TP(대화가 RECEIVE 상태임)가 데이터를 보내려고 했음을 알릴 수 있습니다. 이 요청은 Confirm 호출의 request_to_send_received 매개 변수를 통해 파트너 TP에 전달됩니다. (request_to_send_received 매개 변수는 Send_Data 및 기타 호출에도 반환됩니다.)

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

중요

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