private void updateOrderImbalanceFields(
MamdaSubscription subscription,
MamaMsg msg,
mamaMsgType msgType)
{
string securityStatus = null;
lock (this)
{
MamaMsgField msgField = null;
/*The wSecStatusQual will not always be in the message
so you need to account for this by checking for it.
*/
try
{
msgField = msg.getField(MamdaOrderImbalanceFields.SECURITY_STATUS_QUAL, null);
}
catch (MamdaDataException ex)
{
throw new MamaException(MamaStatus.mamaStatus.MAMA_STATUS_PLATFORM, ex.Message);
}
if (msgField == null) //does not exist
return;
securityStatus = msgField.getString();
if (isImbalanceType(securityStatus))
{
clearCache(mOrderImbalanceCache);
}
msg.iterateFields(mFieldIterator, null,null);
}
switch (msgType)
{
case mamaMsgType.MAMA_MSG_TYPE_INITIAL:
case mamaMsgType.MAMA_MSG_TYPE_RECAP:
handleRecap(subscription, msg);
break;
case mamaMsgType.MAMA_MSG_TYPE_UPDATE:
{
int value = 0;
if (securityStatus != null)
{
value = MamdaOrderImbalanceType.stringToValue(securityStatus);
if (MamdaOrderImbalanceType.isMamdaImbalanceOrder(value))
{
handleOrderImbalance(subscription,msg);
}
else
{
handleNoOrderImbalance(subscription, msg);
}
}
}
break;
default:
break;
}
}