16 #ifndef TENSORFLOW_SERVING_CORE_SERVABLE_DATA_H_
17 #define TENSORFLOW_SERVING_CORE_SERVABLE_DATA_H_
20 #include <type_traits>
22 #include "tensorflow/core/lib/core/status.h"
23 #include "tensorflow/core/platform/logging.h"
24 #include "tensorflow_serving/core/servable_id.h"
26 namespace tensorflow {
33 static_assert(std::is_move_constructible<T>::value,
34 "ServableData<T> requires that T is move-constructible.");
36 !std::is_same<T, Status>::value,
37 "ServableData<T> requires that T not be tensorflow::serving::Status.");
58 const Status& status()
const {
return status_; }
61 const T& DataOrDie()
const;
87 : id_(id), status_(Status()), data_(std::move(data)) {}
90 ServableData<T>::ServableData(
const ServableId&
id,
const Status& error)
91 : id_(id), status_(error) {
96 const T& ServableData<T>::DataOrDie()
const {
101 template <
typename T>
102 T& ServableData<T>::DataOrDie() {
107 template <
typename T>
108 T ServableData<T>::ConsumeDataOrDie() {
109 return std::move(DataOrDie());
112 template <
typename T>
113 ServableData<T> CreateServableData(
const ServableId&
id, T data) {
114 return ServableData<T>(
id, std::move(data));