Пример #1
0
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));
}
Пример #2
0
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));
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
McrouterRouteHandlePtr makeNullRoute(
    RouteHandleFactory<McrouterRouteHandleIf>& factory,
    const folly::dynamic& json) {
  return makeNullRoute();
}