public override void Write(BinaryWriter writer, object obj)
{
var instrument = (Instrument)obj;
writer.Write(instrument.Id);
writer.Write((byte)instrument.Type);
writer.Write(instrument.Symbol);
writer.Write(instrument.Description);
writer.Write(instrument.CurrencyId);
writer.Write(instrument.Exchange);
writer.Write(instrument.TickSize);
writer.Write(instrument.Maturity.Ticks);
writer.Write(instrument.Factor);
writer.Write(instrument.Strike);
writer.Write((byte)instrument.PutCall);
writer.Write(instrument.Margin);
writer.Write(instrument.AltId.Count);
foreach (AltId altId in instrument.AltId)
this.streamerManager.Serialize(writer, altId);
writer.Write(instrument.Legs.Count);
foreach (Leg leg in instrument.Legs)
this.streamerManager.Serialize(writer, leg);
if (this.version == 0)
{
writer.Write(instrument.Fields.Size);
for (int i = 0; i < instrument.Fields.Size; i++)
writer.Write((double)instrument.Fields[i]);
}
if (this.version >= 1)
writer.Write(instrument.PriceFormat);
if (this.version >= 2)
{
writer.Write(instrument.CCY1);
writer.Write(instrument.CCY2);
}
if (this.version >= 3)
writer.Write(instrument.DeleteCached);
if (this.version >= 4)
writer.Write(instrument.Formula);
if (this.version >= 5)
{
if (instrument.Fields == null)
{
writer.Write(-1);
}
else
{
writer.Write(instrument.Fields.Size);
this.streamerManager.Serialize(writer, instrument.Fields);
}
}
}
}