McrouterRouteHandlePtr makeAllInitialRoute( std::vector<McrouterRouteHandlePtr> rh) { if (rh.empty()) { return makeNullRoute(); } if (rh.size() == 1) { return std::move(rh[0]); } return makeMcrouterRouteHandle<AllInitialRoute>(std::move(rh)); }
McrouterRouteHandlePtr makeLatestRoute( std::vector<McrouterRouteHandlePtr> targets, size_t failoverCount, FailoverErrorsSettings failoverErrors) { if (targets.empty() || failoverCount == 0) { return makeNullRoute(); } if (targets.size() == 1) { return std::move(targets[0]); } return makeMcrouterRouteHandle<LatestRoute>( std::move(targets), failoverCount, std::move(failoverErrors)); }
McrouterRouteHandlePtr makeFailoverRoute(std::vector<McrouterRouteHandlePtr> rh, FailoverErrorsSettings failoverErrors, std::unique_ptr<FailoverRateLimiter> rateLimiter, bool failoverTagging) { if (rh.empty()) { return makeNullRoute(); } if (rh.size() == 1) { return std::move(rh[0]); } return makeMcrouterRouteHandle<FailoverRoute>(std::move(rh), std::move(failoverErrors), std::move(rateLimiter), failoverTagging); }
McrouterRouteHandlePtr makeFailoverWithExptimeRoute( McrouterRouteHandlePtr normalTarget, std::vector<McrouterRouteHandlePtr> failoverTargets, int32_t failoverExptime, FailoverErrorsSettings failoverErrors, bool failoverTagging) { if (!normalTarget) { return makeNullRoute(); } if (failoverTargets.empty()) { return std::move(normalTarget); } return std::make_shared<McrouterRouteHandle<FailoverWithExptimeRoute>>( std::move(normalTarget), std::move(failoverTargets), failoverExptime, std::move(failoverErrors), failoverTagging); }
McrouterRouteHandlePtr makeNullRoute( RouteHandleFactory<McrouterRouteHandleIf>& factory, const folly::dynamic& json) { return makeNullRoute(); }