public void WhenLimitOrderUpdated(object sender, LimitOrderEventArgs e)
        {
            var orderId = e.LimitOrder.OrderId;

            if (orderIdToClientIdMap.TryGetValue(orderId, out string clientId) &&
                clientIdToClientSecretMap.TryGetValue(clientId, out string clientSecret))
            {
                var message = e.LimitOrder.ToString();
                OnPrivateMessageUpdated?.Invoke(this, new PrivateMessageEventArgs(clientSecret, message));
            }
        }
        private void ProcessMessage(ZMessage message)
        {
            var key  = message[0].ReadString();
            var data = message[1].ReadString();

            if (IsPublicOrderbookKey(key))
            {
                OnPublicOrderbookUpdated?.Invoke(this, data);
            }
            else if (IsPublicTradeKey(key))
            {
                OnPublicTradeUpdated?.Invoke(this, data);
            }
            else if (IsPrivateOrderKey(key))
            {
                OnPrivateMessageUpdated?.Invoke(this, data);
            }
        }