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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
 /// <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);
 }