2222namespace viam {
2323namespace sdk {
2424
25- using time_point = std::chrono::time_point<long long , std::chrono::nanoseconds>;
26-
2725std::vector<unsigned char > string_to_bytes (const std::string& s) {
2826 std::vector<unsigned char > bytes (s.begin (), s.end ());
2927 return bytes;
@@ -34,21 +32,23 @@ std::string bytes_to_string(const std::vector<unsigned char>& b) {
3432 return img_string;
3533};
3634
37- time_point timestamp_to_time_pt (const google::protobuf::Timestamp& timestamp) {
38- const std::chrono::seconds seconds (timestamp.seconds ());
39- const std::chrono::nanoseconds nanos (timestamp.nanos ());
40- return time_point (std::chrono::duration_cast<std::chrono::system_clock::duration>(seconds) +
41- nanos);
35+ time_pt timestamp_to_time_pt (const google::protobuf::Timestamp& timestamp) {
36+ return time_pt{std::chrono::seconds{timestamp.seconds ()} +
37+ std::chrono::nanoseconds{timestamp.nanos ()}};
4238}
4339
44- google::protobuf::Timestamp time_pt_to_timestamp (const time_point& time_pt) {
45- const std::chrono::seconds duration_s =
46- std::chrono::duration_cast<std::chrono::seconds>(time_pt.time_since_epoch ());
47- const std::chrono::nanoseconds duration_ns = time_pt.time_since_epoch () - duration_s;
48- google::protobuf::Timestamp timestamp;
49- timestamp.set_seconds (duration_s.count ());
50- timestamp.set_nanos (static_cast <int32_t >(duration_ns.count ()));
51- return timestamp;
40+ google::protobuf::Timestamp time_pt_to_timestamp (time_pt tp) {
41+ const std::chrono::nanoseconds since_epoch = tp.time_since_epoch ();
42+
43+ const auto sec_floor = std::chrono::duration_cast<std::chrono::seconds>(since_epoch);
44+ const std::chrono::nanoseconds nano_part = since_epoch - sec_floor;
45+
46+ google::protobuf::Timestamp result;
47+
48+ result.set_seconds (sec_floor.count ());
49+ result.set_nanos (static_cast <int32_t >(nano_part.count ()));
50+
51+ return result;
5252}
5353
5454response_metadata response_metadata::from_proto (const viam::common::v1::ResponseMetadata& proto) {
@@ -80,7 +80,7 @@ std::chrono::microseconds from_proto(const google::protobuf::Duration& proto) {
8080 return from_seconds + from_nanos;
8181}
8282
83- google::protobuf::Duration to_proto (const std::chrono::microseconds& duration) {
83+ google::protobuf::Duration to_proto (std::chrono::microseconds duration) {
8484 namespace sc = std::chrono;
8585
8686 const sc::seconds seconds = sc::duration_cast<sc::seconds>(duration);
0 commit comments