fis-gtm/sr_port_cm/gvcmz_lkcancel_ast.c

58 lines
1.6 KiB
C

/****************************************************************
* *
* Copyright 2001, 2004 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "cmidef.h"
#include "hashtab_mname.h" /* needed for cmmdef.h */
#include "cmmdef.h"
#include "gvcmz.h"
#include "cmi.h"
#include "iosp.h"
GBLREF unsigned short lkresponse_count;
GBLREF unsigned char lkerror;
GBLREF struct CLB *lkerrlnk;
GBLREF int lkcancel_count;
void gvcmz_lkcancel_ast(struct CLB *lnk)
{
uint4 status;
if (CMI_CLB_ERROR(lnk))
{
((link_info *)(lnk->usr))->neterr = TRUE;
lkerror = CMMS_L_LKCANCEL;
lkerrlnk = lnk;
return;
}
if (*(lnk->mbf) == CMMS_M_LKDELETED ||
*(lnk->mbf) == CMMS_M_LKABORT || /* per spec */
*(lnk->mbf) == CMMS_L_LKCANCEL)
{ /* above are end of conversation */
lnk->ast = 0;
lkcancel_count++;
} else if (*(lnk->mbf) == CMMS_M_LKSUSPENDED || *(lnk->mbf) == CMMS_M_LKGRANTED || *(lnk->mbf) == CMMS_M_LKBLOCKED)
{ /* above are response from prior message, ours is to come */
status = cmi_read(lnk);
if (CMI_ERROR(status))
{
((link_info *)(lnk->usr))->neterr = TRUE;
lkerror = CMMS_L_LKCANCEL;
lkerrlnk = lnk;
} else
lkresponse_count++;
} else
{
lkerror = CMMS_L_LKCANCEL;
lkerrlnk = lnk;
}
}