16 #include "tensorflow_serving/batching/threadsafe_status.h"
20 #include "absl/base/thread_annotations.h"
21 #include "absl/status/status.h"
22 #include "absl/synchronization/mutex.h"
23 #include "tensorflow/core/platform/mutex.h"
25 namespace tensorflow {
27 const Status& ThreadSafeStatus::status() const& {
28 tf_shared_lock lock(mutex_);
32 Status ThreadSafeStatus::status() && {
33 tf_shared_lock lock(mutex_);
34 return std::move(status_);
37 void ThreadSafeStatus::Update(
const Status& new_status) {
38 if (new_status.ok()) {
42 mutex_lock lock(mutex_);
43 status_.Update(new_status);
46 void ThreadSafeStatus::Update(Status&& new_status) {
47 if (new_status.ok()) {
51 mutex_lock lock(mutex_);
52 status_.Update(std::forward<Status>(new_status));