public static OrderAddUpdateSummaryMessage Parse(string message) { var values = message.SplitFeedMessage(); // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message Enum.TryParse <Level2MessageType>(values[0], out var messageType); var symbol = values[1]; UInt64.TryParse(values[2], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderId); var mmid = values[3]; Level2SideParser.TryParse(values[4], out var side); double.TryParse(values[5], NumberStyles.Any, CultureInfo.InvariantCulture, out var price); int.TryParse(values[6], NumberStyles.Any, CultureInfo.InvariantCulture, out var size); UInt64.TryParse(values[7], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderPriority); int.TryParse(values[8], NumberStyles.Any, CultureInfo.InvariantCulture, out var precision); TimeSpan.TryParseExact(values[9], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var orderTime); DateTime.TryParseExact(values[10], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var orderDate); return(new OrderAddUpdateSummaryMessage( messageType, symbol, orderId, mmid, side, price, size, orderPriority, precision, orderTime, orderDate )); }
public static PriceLevelDeleteMessage Parse(string message) { var values = message.SplitFeedMessage(); // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message Enum.TryParse<Level2MessageType>(values[0], out var messageType); var symbol = values[1]; Level2SideParser.TryParse(values[2], out var side); double.TryParse(values[3], NumberStyles.Any, CultureInfo.InvariantCulture, out var price); TimeSpan.TryParseExact(values[4], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var time); DateTime.TryParseExact(values[5], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date); return new PriceLevelDeleteMessage ( messageType, symbol, side, price, time, date ); }
public static OrderDeleteMessage Parse(string message) { var values = message.SplitFeedMessage(); // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message Enum.TryParse <Level2MessageType>(values[0], out var messageType); var symbol = values[1]; UInt64.TryParse(values[2], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderId); // values[3] is reserved in protocol 6.2 Level2SideParser.TryParse(values[4], out var side); TimeSpan.TryParseExact(values[5], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var orderTime); DateTime.TryParseExact(values[6], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var orderDate); return(new OrderDeleteMessage ( messageType, symbol, orderId, side, orderTime, orderDate )); }