Migrate Timer from location/nearby to third_party/nearby

PiperOrigin-RevId: 501928835
This commit is contained in:
Qin Wang
2023-01-13 13:44:17 -08:00
committed by Copybara-Service
parent 868e42f5f2
commit f94aa7548b
29 changed files with 165 additions and 102 deletions
@@ -31,6 +31,7 @@ cc_library(
"pipe.h",
"scheduled_executor.h",
"single_thread_executor.h",
"timer.h",
],
defines = ["NO_WEBRTC"],
visibility = ["//visibility:private"],
@@ -53,6 +53,7 @@
#include "internal/platform/implementation/g3/mutex.h"
#include "internal/platform/implementation/g3/scheduled_executor.h"
#include "internal/platform/implementation/g3/single_thread_executor.h"
#include "internal/platform/implementation/g3/timer.h"
#include "internal/platform/implementation/g3/wifi.h"
#include "internal/platform/implementation/g3/wifi_direct.h"
#include "internal/platform/implementation/g3/wifi_hotspot.h"
@@ -224,5 +225,9 @@ ImplementationPlatform::CreateConditionVariable(Mutex* mutex) {
new g3::ConditionVariable(static_cast<g3::Mutex*>(mutex)));
}
std::unique_ptr<Timer> ImplementationPlatform::CreateTimer() {
return std::make_unique<g3::Timer>();
}
} // namespace api
} // namespace nearby
@@ -0,0 +1,71 @@
// 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_IMPL_G3_TIMER_H_
#define PLATFORM_IMPL_G3_TIMER_H_
#include <functional>
#include <utility>
#include "internal/platform/implementation/timer.h"
namespace nearby {
namespace g3 {
class Timer : public api::Timer {
public:
Timer() = default;
~Timer() override = default;
bool Create(int delay, int interval,
std::function<void()> callback) override {
if (delay < 0 || interval < 0) {
return false;
}
callback_ = std::move(callback);
is_stopped_ = false;
return true;
}
bool Stop() override {
is_stopped_ = true;
return true;
}
bool FireNow() override {
if (is_stopped_ || !callback_) {
return false;
}
callback_();
return true;
}
// Mocked methods for test only
void TriggerCallback() {
if (is_stopped_ || callback_ == nullptr) {
return;
}
callback_();
}
private:
std::function<void()> callback_;
bool is_stopped_ = false;
};
} // namespace g3
} // namespace nearby
#endif // PLATFORM_IMPL_G3_TIMER_H_