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.
14 #include "mcrouter/lib/Reply.h"
15 #include "mcrouter/lib/RouteHandleTraverser.h"
16 #include "mcrouter/lib/config/RouteHandleBuilder.h"
25 template <class RouteHandleIf
>
26 class RouteHandleFactory
;
29 * Returns the default reply for each request right away
31 template <class RouteHandleIf
>
33 static std::string
routeName() {
37 template <class Request
>
38 bool traverse(const Request
&, const RouteHandleTraverser
<RouteHandleIf
>&)
43 template <class Request
>
44 static ReplyT
<Request
> route(const Request
& req
) {
45 return createReply(DefaultReply
, req
);
51 template <class RouteHandleIf
>
52 std::shared_ptr
<RouteHandleIf
> createNullRoute() {
53 return makeRouteHandle
<RouteHandleIf
, NullRoute
>();
56 template <class RouteHandleIf
>
57 std::shared_ptr
<RouteHandleIf
> makeNullRoute(
58 RouteHandleFactory
<RouteHandleIf
>&,
59 const folly::dynamic
&) {
60 return createNullRoute
<RouteHandleIf
>();
63 template <class RouteHandleIf
>
64 std::shared_ptr
<RouteHandleIf
> makeNullOrSingletonRoute(
65 std::vector
<std::shared_ptr
<RouteHandleIf
>> rh
) {
66 assert(rh
.size() <= 1);
68 return createNullRoute
<RouteHandleIf
>();
70 return std::move(rh
[0]);
73 } // namespace mcrouter
74 } // namespace memcache
75 } // namespace facebook