Exemplo n.º 1
0
        public void Refresh(IDataContext context)
        {
            if (IsFresh)
            {
                return;
            }

            lock (RefreshLock)
            {
                if (IsFresh)
                {
                    return;
                }

                if (AggregationProvider == null)
                {
                    return;
                }

                var r = ApiCoordinator.GetCoinSnapshot(AggregationProvider, new AssetPairDataContext(this));
                if (r.Success)
                {
                    this.Save(context);
                }
            }
        }
Exemplo n.º 2
0
        public AggregatedAssetPairData GetAggAssetPairData(AssetPair pair)
        {
            var data = _assetPairs.GetOrAdd(pair, k =>
            {
                var id  = AggregatedAssetPairData.GetHash(k);
                var apd = PublicContext.I.GetCollection <AggregatedAssetPairData>().FindById(id);
                if (apd != null)
                {
                    return(apd);
                }

                var prov = Networks.I.GetProviders <ICoinSnapshotAggregationProvider>().FirstProvider();
                var r    = ApiCoordinator.GetCoinSnapshot(prov, new AssetPairDataContext(new AggregatedAssetPairData(k, prov)));

                apd = r.IsNull ? new AggregatedAssetPairData(k, prov)
                {
                    UtcUpdated = DateTime.UtcNow, IsMissing = true
                } : r.Response;
                apd.Save(PublicContext.I);

                return(apd);
            });

            data.Refresh(PublicContext.I);
            return(data);
        }