下圖顯示從動態存取模組 (DMOD) 接收訊息的方法。
使用路由程式接收訊息
DMOD 初始化之後,3270 模擬器會藉由呼叫 sepdrout 來註冊路由程式。 當 DMOD 收到訊息時,它會呼叫 3270 模擬器路由程式,然後可以處理訊息。
使用此方法時,DMOD 線程與 3270 模擬器線程之間沒有內容切換。 不過,路由程式必須快速將控制權傳回 DMOD。 例如,它無法暫停等候鍵盤輸入。
應用程式必須判斷接收的訊息是針對此應用程式,還是針對另一個應用程式。 如果訊息不是此應用程式,路由程式必須傳回,表示訊息未處理。 如果應用程式處理訊息,則負責在處理完成時釋放緩衝區。
在某些情況下,路由程式可以處理訊息以完成。 替代方法是讓路由程式將訊息放在應用程式佇列上,然後清除應用程式號誌。 接著,應用程式就可以處理訊息。
藉由傳送 Status-Resource 訊息來進一步改善效能(傳回本機節點的點數,以便在收到訊息時從路由程式傳送進一步數據),而不是等到訊息處理完成為止。 此用法說明於 範例程式代碼:初始化和路由程式。 如需信用和流程控制的詳細資訊,請參閱 步調和區塊處理。
應用程式收到訊息之後,應用程式會負責接收訊息的緩衝區。 應用程式必須重複使用緩衝區來傳送訊息(使用 sbpusend)或釋放它(使用 sepdburl)。 如果要重複使用的緩衝區未包含要傳送之訊息的正確元素數目,應用程式可以取得其他元素(使用 sbpibegt)或釋放現有的元素(使用 sbpiberl)。 在此情況下,應用程式也必須確保緩衝區標頭中的 numelts 欄位指出正確的元素數目。