|
function TrackSubmittedMsgUntilCompleted( MessageHandle )
{
var Tl, Sl, MsgCompletionCode = -1;
while (OpenSession())
{
var StopPollingMsg;
// Get information for a previously submitted message
Tl = CAS.New();
CAS.AddTag(Tl,"GET_Q_ENTRIES_INFO","");
CAS.AddTag(Tl,"REGISTERED_NAME","Fred");
CAS.AddTag(Tl,"REGISTERED_PASSWORD","");
CAS.AddTag(Tl,"USER_NAME","Fred");
CAS.AddTag(Tl,"SPECIFIED_MESSAGE_HANDLE",MessageHandle);
Sl = CAS.CreateSection(Tl,"RESPONSE_INCLUDE_ONLY","");
CAS.AddTag(Sl,"MESSAGE_STATUS","");
CAS.AddTag(Sl,"MESSAGE_COMPLETION_CODE","");
CAS.CloseSection(Sl);
Tl = CAS.Send(Instance,Tl);
if (CAS.GetTag(Tl,"STATUS_NUM",0) == 0)
{
Sl = CAS.OpenSection(Tl,"MESSAGE_HANDLE");
if (CAS.GetTag(Sl,"MESSAGE_STATUS",0) == 5)
{
// The MESSAGE_COMPLETION_CODE is only valid once
// the MESSAGE_STATUS is at 5 (completed)
MsgCompletionCode =
CAS.GetTag(Sl,"MESSAGE_COMPLETION_CODE",0);
StopPollingMsg = true;
}
else
{
// Keep polling, the message isn't done
StopPollingMsg = false;
}
CAS.CloseSection(Sl);
}
else
{
// Failed to retrieve updated status
StopPollingMsg = true;
}
CAS.Delete(Tl);
CloseSession();
if (StopPollingMsg)
{
break;
}
CAS.Sleep(5000);
}
return(MsgCompletionCode);
}
|