2 * Copyright (c) Meta Platforms, Inc. and affiliates.
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
10 #include <folly/dynamic.h>
12 #include "mcrouter/lib/config/RouteHandleBuilder.h"
13 #include "mcrouter/lib/config/RouteHandleFactory.h"
14 #include "mcrouter/lib/routes/AllSyncRoute.h"
15 #include "mcrouter/lib/routes/NullRoute.h"
23 template <class RouterInfo
>
24 typename
RouterInfo::RouteHandlePtr
makeAllSyncRoute(
25 std::vector
<typename
RouterInfo::RouteHandlePtr
> rh
) {
27 return createNullRoute
<typename
RouterInfo::RouteHandleIf
>();
31 return std::move(rh
[0]);
34 return makeRouteHandle
<typename
RouterInfo::RouteHandleIf
, AllSyncRoute
>(
40 template <class RouterInfo
>
41 typename
RouterInfo::RouteHandlePtr
makeAllSyncRoute(
42 RouteHandleFactory
<typename
RouterInfo::RouteHandleIf
>& factory
,
43 const folly::dynamic
& json
) {
44 std::vector
<typename
RouterInfo::RouteHandlePtr
> children
;
45 if (json
.isObject()) {
46 if (auto jchildren
= json
.get_ptr("children")) {
47 children
= factory
.createList(*jchildren
);
50 children
= factory
.createList(json
);
52 return detail::makeAllSyncRoute
<RouterInfo
>(std::move(children
));
54 } // namespace mcrouter
55 } // namespace memcache
56 } // namespace facebook