diff --git a/internal/platform/BUILD b/internal/platform/BUILD index c297a029..6231c4b3 100644 --- a/internal/platform/BUILD +++ b/internal/platform/BUILD @@ -303,6 +303,7 @@ cc_test( cc_library( name = "types", srcs = [ + "clock_impl.cc", "device_info_impl.cc", "monitored_runnable.cc", "pending_job_registry.cc", @@ -317,6 +318,8 @@ cc_library( "cancelable.h", "cancelable_alarm.h", "cancellable_task.h", + "clock.h", + "clock_impl.h", "condition_variable.h", "count_down_latch.h", "crypto.h", diff --git a/internal/platform/clock.h b/internal/platform/clock.h new file mode 100644 index 00000000..45ef0028 --- /dev/null +++ b/internal/platform/clock.h @@ -0,0 +1,30 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef PLATFORM_PUBLIC_CLOCK_H_ +#define PLATFORM_PUBLIC_CLOCK_H_ + +#include "absl/time/time.h" + +namespace nearby { + +class Clock { + public: + virtual ~Clock() = default; + virtual absl::Time Now() const = 0; +}; + +} // namespace nearby + +#endif // PLATFORM_PUBLIC_CLOCK_H_ diff --git a/internal/platform/clock_impl.cc b/internal/platform/clock_impl.cc new file mode 100644 index 00000000..df9de197 --- /dev/null +++ b/internal/platform/clock_impl.cc @@ -0,0 +1,23 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "internal/platform/clock_impl.h" + +#include "absl/time/clock.h" + +namespace nearby { + +absl::Time ClockImpl::Now() const { return absl::Now(); } + +} // namespace nearby diff --git a/internal/platform/clock_impl.h b/internal/platform/clock_impl.h new file mode 100644 index 00000000..777fa831 --- /dev/null +++ b/internal/platform/clock_impl.h @@ -0,0 +1,30 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef PLATFORM_PUBLIC_CLOCK_IMPL_H_ +#define PLATFORM_PUBLIC_CLOCK_IMPL_H_ + +#include "absl/time/time.h" +#include "internal/platform/clock.h" + +namespace nearby { + +class ClockImpl : public Clock { + public: + absl::Time Now() const override; +}; + +} // namespace nearby + +#endif // PLATFORM_PUBLIC_CLOCK_IMPL_H_