Интеграция приложений на основе WebSphere MQ


Example.9.1 - часть 3


/* до тех пор пока не встретим сообщение об ошибке */

/*****************************************************************************/

buflen = sizeof(buffer) - 1;

while (CompCode == MQCC_OK)

{

gmo.Options = MQGMO_ACCEPT_TRUNCATED_MSG + MQGMO_WAIT;

gmo.WaitInterval = 3000; /* Ожидаем новые сообщения 3 секунды */

//gmo.WaitInterval = MQWI_UNLIMITED;

memcpy(md.MsgId, MQMI_NONE, sizeof(md.MsgId));

memcpy(md.CorrelId, MQMI_NONE, sizeof(md.CorrelId));

MQGET(Hcon, Hobj, &md, &gmo, buflen, buffer, &messlen, &CompCode, &Reason);

if ((CompCode == MQCC_OK) || (CompCode == MQCC_WARNING))

{

buffer[messlen] = '\0'; /* заносим символ конец строки в буфер с прочитанным сообщением */

buflen = messlen;

MQPUT(Hcon, Hout, &md, &pmo, buflen, buffer, &CompCode, &Reason);

if ((CompCode == MQCC_OK) || (CompCode == MQCC_WARNING))

{

tmr = time(NULL);

strcpy ( buf, ctime(&tmr));

buf[strlen(buf)-1]=0; // переход к новой строке

Reason = fprintf( fp, "%s: %s\n", buf, buffer );

}

} /* конец обработки входного сообщения */

} /* конец цикла чтения/записи сообщений функциями MQGET, MQPUT */

fclose (fp);

C_options = 0; /* нет никаких опций при закрытии */

MQCLOSE(Hcon, &Hobj, C_options, &CompCode, &Reason); /* закрываем очередь для чтения */

if (Reason != MQRC_NONE)

{printf("MQCLOSE (input) ended with reason code %ld\n", Reason); }

MQCLOSE(Hcon, &Hout, C_options, &CompCode, &Reason); /* закрываем очередь для записи */

if (Reason != MQRC_NONE)

{printf("MQCLOSE (output) ended with reason code %ld\n", Reason); }

if (CReason != MQRC_ALREADY_CONNECTED)

{

MQDISC(&Hcon, &CompCode, &Reason);

if (Reason != MQRC_NONE){ printf("MQDISC ended with reason code %ld\n", Reason); }

}

return(0);

}




Начало  Назад  Вперед



Книжный магазин