public void ReverseRoute(Header header)
{
// required routing tags
this.Header.RemoveField(Tags.BeginString);
this.Header.RemoveField(Tags.SenderCompID);
this.Header.RemoveField(Tags.TargetCompID);
if (header.IsSetField(Tags.BeginString))
{
string beginString = header.GetField(Tags.BeginString);
if (beginString.Length > 0)
this.Header.SetField(new BeginString(beginString));
this.Header.RemoveField(Tags.OnBehalfOfLocationID);
this.Header.RemoveField(Tags.DeliverToLocationID);
if (beginString.CompareTo("FIX.4.1") >= 0)
{
if (header.IsSetField(Tags.OnBehalfOfLocationID))
{
string onBehalfOfLocationID = header.GetField(Tags.OnBehalfOfLocationID);
if (onBehalfOfLocationID.Length > 0)
this.Header.SetField(new DeliverToLocationID(onBehalfOfLocationID));
}
if (header.IsSetField(Tags.DeliverToLocationID))
{
string deliverToLocationID = header.GetField(Tags.DeliverToLocationID);
if (deliverToLocationID.Length > 0)
this.Header.SetField(new OnBehalfOfLocationID(deliverToLocationID));
}
}
}
if (header.IsSetField(Tags.SenderCompID))
{
SenderCompID senderCompID = new SenderCompID();
header.GetField(senderCompID);
if (senderCompID.Obj.Length > 0)
this.Header.SetField(new TargetCompID(senderCompID.Obj));
}
if (header.IsSetField(Tags.TargetCompID))
{
TargetCompID targetCompID = new TargetCompID();
header.GetField(targetCompID);
if (targetCompID.Obj.Length > 0)
this.Header.SetField(new SenderCompID(targetCompID.Obj));
}
// optional routing tags
this.Header.RemoveField(Tags.OnBehalfOfCompID);
this.Header.RemoveField(Tags.OnBehalfOfSubID);
this.Header.RemoveField(Tags.DeliverToCompID);
this.Header.RemoveField(Tags.DeliverToSubID);
if(header.IsSetField(Tags.OnBehalfOfCompID))
{
string onBehalfOfCompID = header.GetField(Tags.OnBehalfOfCompID);
if(onBehalfOfCompID.Length > 0)
this.Header.SetField(new DeliverToCompID(onBehalfOfCompID));
}
if(header.IsSetField(Tags.OnBehalfOfSubID))
{
string onBehalfOfSubID = header.GetField( Tags.OnBehalfOfSubID);
if(onBehalfOfSubID.Length > 0)
this.Header.SetField(new DeliverToSubID(onBehalfOfSubID));
}
if(header.IsSetField(Tags.DeliverToCompID))
{
string deliverToCompID = header.GetField(Tags.DeliverToCompID);
if(deliverToCompID.Length > 0)
this.Header.SetField(new OnBehalfOfCompID(deliverToCompID));
}
if(header.IsSetField(Tags.DeliverToSubID))
{
string deliverToSubID = header.GetField(Tags.DeliverToSubID);
if(deliverToSubID.Length > 0)
this.Header.SetField(new OnBehalfOfSubID(deliverToSubID));
}
}
public void ReverseRoute() { string str1 = "8=FIX.4.2\x01" + "9=55\x01" + "35=0\x01" + "34=3\x01" + "49=TW\x01" + "52=20000426-12:05:06\x01" + "56=ISLD\x01" + "1=acct123\x01" + "10=123\x01"; Message msg = new Message(); try { msg.FromString(str1, true, null, null, _defaultMsgFactory); } catch (InvalidMessage e) { Assert.Fail("Unexpected exception (InvalidMessage): " + e.Message); } Header header = new Header(); header.SetField(new BeginString("FIX.4.2")); header.SetField(new SenderCompID("SENDER")); header.SetField(new SenderSubID("SENDERSUB")); header.SetField(new SenderLocationID("SENDERLOC")); header.SetField(new TargetCompID("TARGET")); header.SetField(new TargetSubID("TARGETSUB")); header.SetField(new TargetLocationID("TARGETLOC")); msg.ReverseRoute(header); Assert.That(msg.Header.GetString(Tags.BeginString), Is.EqualTo("FIX.4.2")); Assert.That(msg.Header.GetString(Tags.TargetCompID), Is.EqualTo("SENDER")); Assert.That(msg.Header.GetString(Tags.TargetSubID), Is.EqualTo("SENDERSUB")); Assert.That(msg.Header.GetString(Tags.TargetLocationID), Is.EqualTo("SENDERLOC")); Assert.That(msg.Header.GetString(Tags.SenderCompID), Is.EqualTo("TARGET")); Assert.That(msg.Header.GetString(Tags.SenderSubID), Is.EqualTo("TARGETSUB")); Assert.That(msg.Header.GetString(Tags.SenderLocationID), Is.EqualTo("TARGETLOC")); }