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; } }
private bool TryConversion(AssetPairNetworks networks, LatestPriceResultMessage m) { if (TryConversion(networks, m, false)) { return(true); } if (TryConversion(networks, m, true)) { return(true); } return(false); }
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); } }
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); }