다음을 통해 공유


메시지 받기

다음 그림에서는 DMOD(동적 액세스 모듈)에서 메시지를 받는 방법을 보여 줍니다.

라우팅 프로시저를 사용하여 메시지를 받는 방법을 보여 주는 이미지입니다.
라우팅 프로시저를 사용하여 메시지 받기

DMOD 초기화 후 3270 에뮬레이터는 sepdrout를 호출하여 라우팅 프로시저를 등록합니다. DMOD에서 메시지를 받으면 3270 에뮬레이터 라우팅 프로시저를 호출한 다음, 메시지를 처리할 수 있습니다.

이 접근 방식을 사용하면 DMOD 스레드와 3270 에뮬레이터 스레드 간에 컨텍스트 전환이 없습니다. 하지만 라우팅 프로시저는 DMOD에 대한 제어를 신속하게 반환해야 합니다. 예를 들어 키보드 입력 대기를 일시 중단할 수 없습니다.

애플리케이션은 받은 메시지가 이 애플리케이션에 대한 것인지, 다른 애플리케이션에 대한 것인지를 결정해야 합니다. 이 애플리케이션에 대한 메시지가 아닌 경우 라우팅 프로시저에서 반환하여 메시지가 처리되지 않았음을 나타내야 합니다. 애플리케이션에서 메시지를 처리하는 경우 처리가 완료되면 버퍼를 해제해야 합니다.

경우에 따라 라우팅 프로시저는 메시지를 끝까지 처리할 수 있습니다. 라우팅 프로시저에서 메시지를 애플리케이션 큐에 넣은 다음, 애플리케이션 세마포를 지우는 방법도 있습니다. 그러면 이후에 애플리케이션이 메시지를 처리할 수 있습니다.

메시지가 끝까지 처리될 때까지 대기하는 대신 메시지를 받을 때 라우팅 프로시저에서 Status-Resource 메시지(로컬 노드에 크레딧을 반환하여 추가 데이터를 보낼 수 있도록 함)를 보내면 성능을 더 향상할 수 있습니다. 이 사용법은 샘플 코드: 초기화 및 라우팅 프로시저에 설명되어 있습니다. 크레딧 및 흐름 제어에 대한 자세한 내용은 속도 및 청크를 참조하세요.

애플리케이션은 메시지를 받은 후 메시지를 받은 버퍼를 담당합니다. 애플리케이션은 버퍼를 다시 사용하여 메시지를 보내거나(sbpusend 사용) 버퍼를 해제(sepdburl 사용)해야 합니다. 다시 사용할 버퍼에 보낼 메시지에 대한 올바른 개수의 요소가 포함되지 않은 경우 애플리케이션은 추가 요소를 가져오거나(sbpibegt 사용) 기존 요소를 해제(sbpiberl사용)할 수 있습니다. 이 경우 애플리케이션은 버퍼 헤더의 numelts 필드가 올바른 개수의 요소를 나타내는지 확인해야 합니다.