Esempio n. 1
0
 private void Discover(AssetPair pair)
 {
     DiscoverFirst = DiscoverSpecified(pair) ??
                     Discover(pair, Context.ReversalEnabled) ??
                     DiscoverPegged(pair, Context.ReversalEnabled, Context.PeggedEnabled) ??
                     DiscoverIntermediary(pair);
 }
        private static void ProcessConverted(Request request, AssetPairNetworks networks)
        {
            var part2 = new Request(request.Pair, networks.Network <IPublicPricingProvider>())
            {
                IsConvertedPart1 = false,
                IsConvertedPart2 = true
            };

            ProcessDiscovery(part2, networks, true);
        }
        private static void ProcessDiscovery(Request request, AssetPairNetworks r, bool isPart2 = false)
        {
            request.IsConvertedPart1 = !isPart2 && r.ConversionPart2 != null;
            request.Discovered       = r;
            request.IsDiscovered     = true;

            if (request.IsConvertedPart1 && !isPart2)
            {
                ProcessConverted(request, r.ConversionPart2);
            }
        }
 private void DoIntermediary(AssetPairNetworks networks)
 {
     if (networks.IsPegged)
     {
         AssetPegged = networks.Pair.Asset2;
     }
     else if (networks.Intermediary != null)
     {
         AssetIntermediary = networks.Intermediary;
     }
 }
Esempio n. 5
0
 private bool TryConversion(AssetPairNetworks networks, LatestPriceResultMessage m)
 {
     if (TryConversion(networks, m, false))
     {
         return(true);
     }
     if (TryConversion(networks, m, true))
     {
         return(true);
     }
     return(false);
 }
Esempio n. 6
0
        public RequestMessenger(Request request)
        {
            _request     = request;
            _nets        = _request.Discovered;
            _isReversed  = _request.IsReversed;
            _isConverted = _request.IsConverted;

            if (_nets == null || !_request.IsDiscovered || !(_isReversed || _isConverted))
            {
                return;
            }

            if (_isConverted)
            {
                _m.RegisterAsync <LatestPriceResultMessage>(this, DoConversion);
            }
            else if (_isReversed)
            {
                _m.RegisterAsync <LatestPriceResultMessage>(this, DoReversal);
            }
        }
Esempio n. 7
0
        private bool TryConversion(AssetPairNetworks networks, LatestPriceResultMessage m, bool reverse)
        {
            var pair = reverse ? networks.Pair.Reversed : networks.Pair;

            if (!pair.Equals(m.Pair))
            {
                return(false);
            }

            var message = reverse ? new LatestPriceResultMessage(m.Provider, m.MarketPrice.Reversed) : m;

            if (networks.IsConversionPart1)
            {
                _request.LastConvert1 = message;
            }
            else
            {
                _request.LastConvert2 = message;
            }

            return(true);
        }