/// <summary>
 /// Responds to the changes in exchange data.
 /// </summary>
 /// <param name="exchangeDelta">Exchange delta stream data.</param>
 protected static void OnExchangeDeltaUpdate(BittrexExchangeState exchangeDelta)
 {
     if (_streams.TryGetValue(exchangeDelta.MarketName, out var stream))
     {
         stream.UpdateExchangeDelta(new BittrexExchangeStateProvider(exchangeDelta));
     }
 }
        /// <summary>
        /// get basic/initial info of a specific market
        /// 500 Buys
        /// 100 Fills
        /// 500 Sells
        /// </summary>
        /// <param name="marketName">The name of the market to subscribe on</param>
        /// <param name="onUpdate">The update event handler</param>
        /// <returns>ApiResult whether subscription was successful. The Result property contains the Stream Id which can be used to unsubscribe the stream again</returns>
        public async Task <BittrexApiResult <int> > QueryExchangeStateAsync(string marketName, Action <BittrexExchangeState> onUpdate)
        {
            return(await Task.Run(() =>
            {
                log.Write(LogVerbosity.Debug, $"Going to call QueryExchangeState for market: {marketName}");
                if (!CheckConnection())
                {
                    return ThrowErrorMessage <int>(BittrexErrors.GetError(BittrexErrorKey.CantConnectToServer));
                }


                // gives direkt return -> no subscription
                // https://stackoverflow.com/questions/11140164/signalr-console-app-example
                proxy.Invoke <JObject>("QueryExchangeState", marketName).ContinueWith(task => {
                    if (task.IsFaulted)
                    {
                        log.Write(LogVerbosity.Error, String.Format("There was an error calling send: {0}", task.Exception.GetBaseException()));
                    }
                    else
                    {
                        string json = "";

                        try
                        {
                            json = task.Result.ToString();

                            BittrexExchangeState StreamData = JsonConvert.DeserializeObject <BittrexExchangeState>(json);

                            onUpdate(StreamData);
                        }
                        catch (Exception e)
                        {
                            log.Write(LogVerbosity.Warning, $"Received an event but an unknown error occured. Message: {e.Message}, Received data: {json}");
                        }
                    }
                });

                return new BittrexApiResult <int>()
                {
                    Success = true
                };
            }).ConfigureAwait(false));
        }
Exemple #3
0
 /// <summary>
 /// Initializes the new exchange state provider for Bittrex exchanger.
 /// </summary>
 /// <param name="source">Exchange state data source.</param>
 public BittrexExchangeStateProvider(BittrexExchangeState source)
 {
     Source = source;
 }