Achèvement d’un appel asynchrone
À une exception près, Microsoft® Host Integration Server autorise un appel asynchrone SNA Windows® en cours par connexion et un verbe bloquant par thread. L’exception à cela est que lors de l’émission d’un appel de réception asynchrone, les appels suivants peuvent être émis pendant que la réception est en attente :
-
Cela permet à une application, en particulier un émulateur 5250, d’utiliser une réception asynchrone pour recevoir des données. L’utilisation de cette fonctionnalité est fortement recommandée.
L’exemple suivant montre comment utiliser la complétion asynchrone des appels avec Host Integration Server :
void ProcessVerbCompletion (WPARAM wParam LPARAM lParam)
{
for ( i = 0; i<nPendingVerbs; i++ )
if (memcmp (pPending [i].ConvID, (Conversation_ID) lParam)== 0)
ProcessCommand (wParam, lParam);
}
LRESULT CALLBACK SampleWndProc ( . . .)
{
if (msg = = uAsyncCPIC ) {
ProcessVerbCompletion (wParam, lParam);
}
else switch (msg) {
case WM_USER:
Initialize_Conversation (lpConvId, "GORDM", &lError );
if (lError ! = CM_OK ) {
ErrorDisplay ( ) ;
break ;
}
Set_Processing_Mode (lpConvId, CM_NON_BLOCKING, &lError ) ;
if ( lError ! = CM_OK ) {
ErrorDisplay ( ) ;
break ;
}
Allocate (lpConvId, &lError ) ;
switch (lError ) {
case CM_OK:
break ;
case CM_OPERATION_INCOMPLETE:
memcopy (pPending [nPending ++].ConvId, lpConvId, sizeof (C) ;
break ;
default:
ErrorDisplay ( ) ;
}
break ;
}
WinMain ( . . . )
{
if ( ( WinCPICStartup ( . . . ) = = FALSE ) {
return FALSE;
}
uAsyncCPIC = RegisterWindowMessage ("WinAsyncCPIC"");
Specify_Windows_Handle (hwndSample) ;
while (GetMessage ( . . . ) ) {
. . . . .
}
WinCPICCleanup ( . . . )
}
Pour plus d’informations sur les appels CPI-C et les extensions Windows, consultez Appels et extensions CPI-Cpour l’environnement Windows. Pour plus d’informations sur l’utilisation de CPI-C, consultez référence de l’architecture d’application IBM Systems Common Programming Interface Communications, numéro de partie SC26-4399-04.