1*14675a02SAndroid Build Coastguard Worker /* 2*14675a02SAndroid Build Coastguard Worker * Copyright 2022 Google LLC 3*14675a02SAndroid Build Coastguard Worker * 4*14675a02SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*14675a02SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*14675a02SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*14675a02SAndroid Build Coastguard Worker * 8*14675a02SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*14675a02SAndroid Build Coastguard Worker * 10*14675a02SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*14675a02SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*14675a02SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*14675a02SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*14675a02SAndroid Build Coastguard Worker * limitations under the License. 15*14675a02SAndroid Build Coastguard Worker */ 16*14675a02SAndroid Build Coastguard Worker #ifndef FCP_BASE_TIME_UTIL_H_ 17*14675a02SAndroid Build Coastguard Worker #define FCP_BASE_TIME_UTIL_H_ 18*14675a02SAndroid Build Coastguard Worker 19*14675a02SAndroid Build Coastguard Worker #include "google/protobuf/duration.pb.h" 20*14675a02SAndroid Build Coastguard Worker #include "google/protobuf/timestamp.pb.h" 21*14675a02SAndroid Build Coastguard Worker #include "absl/time/time.h" 22*14675a02SAndroid Build Coastguard Worker 23*14675a02SAndroid Build Coastguard Worker namespace fcp { 24*14675a02SAndroid Build Coastguard Worker 25*14675a02SAndroid Build Coastguard Worker class TimeUtil { 26*14675a02SAndroid Build Coastguard Worker public: 27*14675a02SAndroid Build Coastguard Worker // Converts an absl::Time to a google::protobuf::Timestamp. 28*14675a02SAndroid Build Coastguard Worker // Note that we assume the timestamps we deal with here are representable by 29*14675a02SAndroid Build Coastguard Worker // both formats. If the resulted google::protobuf::Timestamp is invalid, it 30*14675a02SAndroid Build Coastguard Worker // will lead to undefined behavior. 31*14675a02SAndroid Build Coastguard Worker static google::protobuf::Timestamp ConvertAbslToProtoTimestamp(absl::Time t); 32*14675a02SAndroid Build Coastguard Worker 33*14675a02SAndroid Build Coastguard Worker // Converts a google::protobuf::Timestamp to an absl::Time. 34*14675a02SAndroid Build Coastguard Worker // Note that we assume the timestamps we deal with here are representable by 35*14675a02SAndroid Build Coastguard Worker // both formats. If the resulted absl::Time is invalid, it will lead to 36*14675a02SAndroid Build Coastguard Worker // undefined behavior. 37*14675a02SAndroid Build Coastguard Worker static absl::Time ConvertProtoToAbslTime(google::protobuf::Timestamp proto); 38*14675a02SAndroid Build Coastguard Worker 39*14675a02SAndroid Build Coastguard Worker // Converts an absl::Duration to a google::protobuf::Duration. 40*14675a02SAndroid Build Coastguard Worker // Note that we assume the durations we deal with here are representable by 41*14675a02SAndroid Build Coastguard Worker // both formats. If the resulted google::protobuf::Duration is invalid, it 42*14675a02SAndroid Build Coastguard Worker // will lead to undefined behavior. 43*14675a02SAndroid Build Coastguard Worker static google::protobuf::Duration ConvertAbslToProtoDuration( 44*14675a02SAndroid Build Coastguard Worker absl::Duration absl_duration); 45*14675a02SAndroid Build Coastguard Worker 46*14675a02SAndroid Build Coastguard Worker // Converts a google::protobuf::Duration to an absl::Duration. 47*14675a02SAndroid Build Coastguard Worker // Note that we assume the timestamps we deal with here are representable by 48*14675a02SAndroid Build Coastguard Worker // both formats. If the resulted google::protobuf::Duration is invalid, it 49*14675a02SAndroid Build Coastguard Worker // will lead to undefined behavior. 50*14675a02SAndroid Build Coastguard Worker static absl::Duration ConvertProtoToAbslDuration( 51*14675a02SAndroid Build Coastguard Worker google::protobuf::Duration proto); 52*14675a02SAndroid Build Coastguard Worker }; 53*14675a02SAndroid Build Coastguard Worker 54*14675a02SAndroid Build Coastguard Worker } // namespace fcp 55*14675a02SAndroid Build Coastguard Worker 56*14675a02SAndroid Build Coastguard Worker #endif // FCP_BASE_TIME_UTIL_H_ 57