16 #ifndef TENSORFLOW_SERVING_CORE_ASPIRED_VERSIONS_MANAGER_BUILDER_H_
17 #define TENSORFLOW_SERVING_CORE_ASPIRED_VERSIONS_MANAGER_BUILDER_H_
21 #include "tensorflow/core/lib/core/status.h"
22 #include "tensorflow_serving/core/aspired_versions_manager.h"
23 #include "tensorflow_serving/core/loader.h"
24 #include "tensorflow_serving/core/source.h"
25 #include "tensorflow_serving/core/source_adapter.h"
26 #include "tensorflow_serving/util/unique_ptr_with_deps.h"
28 namespace tensorflow {
62 static Status Create(
Options options,
63 std::unique_ptr<AspiredVersionsManagerBuilder>* builder);
73 void AddSource(std::unique_ptr<S> source);
85 template <
typename S,
typename SA,
typename... Args>
87 std::unique_ptr<SA> first_source_adapter,
88 std::unique_ptr<Args>... remaining_source_adapters);
91 std::unique_ptr<Manager>
Build();
95 std::unique_ptr<AspiredVersionsManager> manager);
97 template <
typename S,
typename SA,
typename... Args>
98 void AddSourceChainImpl(std::unique_ptr<S> source,
99 std::unique_ptr<SA> first_source_adapter,
100 std::unique_ptr<Args>... remaining_source_adapters);
102 template <
typename S>
103 void AddSourceChainImpl(std::unique_ptr<S> source);
113 template <
typename S>
116 std::is_convertible<S*,
Source<std::unique_ptr<Loader>>*>::value,
117 "Source type should be convertible to Source<std::unique_ptr<Loader>>.");
118 ConnectSourceToTarget(source.get(), aspired_versions_manager_);
119 manager_with_sources_.AddDependency(std::move(source));
122 template <
typename S,
typename SA,
typename... Args>
124 std::unique_ptr<S> source, std::unique_ptr<SA> first_source_adapter,
125 std::unique_ptr<Args>... remaining_source_adapters) {
126 AddSourceChainImpl(std::move(source), std::move(first_source_adapter),
127 std::move(remaining_source_adapters)...);
130 template <
typename S,
typename SA,
typename... Args>
131 void AspiredVersionsManagerBuilder::AddSourceChainImpl(
132 std::unique_ptr<S> source, std::unique_ptr<SA> first_source_adapter,
133 std::unique_ptr<Args>... remaining_source_adapters) {
134 auto*
const target = first_source_adapter.get();
135 AddSourceChainImpl(std::move(first_source_adapter),
136 std::move(remaining_source_adapters)...);
137 ConnectSourceToTarget(source.get(), target);
140 manager_with_sources_.AddDependency(std::move(source));
143 template <
typename S>
144 void AspiredVersionsManagerBuilder::AddSourceChainImpl(
145 std::unique_ptr<S> source) {
void AddSourceChain(std::unique_ptr< S > source, std::unique_ptr< SA > first_source_adapter, std::unique_ptr< Args >... remaining_source_adapters)
std::unique_ptr< Manager > Build()
Builds the AspiredVersionsManager and returns it as the Manager interface.
void AddSource(std::unique_ptr< S > source)