public void ProcessMessages(byte[] messageBytes, int count) { var messages = Encoding.ASCII.GetString(messageBytes, 0, count).SplitFeedLine(); for (var i = 0; i < messages.Length; i++) { var message = messages[i]; // Try parsing the IntervalBarMessage pattern if (IntervalBarMessage.TryParse(message, out var intervalBarMessage)) { IntervalBar?.Invoke(intervalBarMessage); continue; } // Check with other pattern possible switch (message[0]) { case 'S': // A system message ProcessSystemMessage(message); break; case 'E': // An error message ProcessErrorMessage(message); break; case 'n': // Symbol not found message ProcessSymbolNotFoundMessage(message); break; default: throw new Exception("Unknown type of derivative message received."); } } }
protected override bool HasIntervalBar(string msg) { if (IntervalBarMessage.TryParse(msg, out IntervalBarMessage <decimal> intervalBarMessage)) { IntervalBar?.Invoke(intervalBarMessage); return(true); } return(false); }
private bool HasIntervalBar(string msg) { if (IntervalBarMessage.TryParse(msg, out IntervalBarMessage intervalBarMessage)) { IntervalBar?.Invoke(intervalBarMessage); return(true); } return(false); }
public void Should_Parse_Without_RequestId(string cultureName) { // Arrange TestHelper.SetThreadCulture(cultureName); var message = "TESTREQUEST,BC,AAPL,2018-01-01 09:30:00,100.01,101.23,99.98,100.93,143562,745,0"; // Act var intervalBarMessage = new IntervalBarMessage(IntervalBarType.C, "AAPL", new DateTime(2018, 1, 1, 9, 30, 0), 100.01, 101.23, 99.98, 100.93, 143562, 745, 0, "TESTREQUEST"); var intervalBarMessageParsed = IntervalBarMessage.ParseWithRequestId(message); // Assert Assert.AreEqual(intervalBarMessage, intervalBarMessageParsed); }
/// <summary> /// Call to trigger the BarReceived event. /// </summary> /// <param name="bar">The new bar to send to BarReceived.</param> protected virtual void OnIntervalBar(IntervalBarMessage bar) { BarReceived.SafeTrigger(bar); }