summaryrefslogtreecommitdiff
path: root/chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h')
-rw-r--r--chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h202
1 files changed, 0 insertions, 202 deletions
diff --git a/chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h b/chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h
deleted file mode 100644
index 01de6f886de..00000000000
--- a/chromium/third_party/nearby/src/cpp/core/internal/offline_simulation_user.h
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2020 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 CORE_INTERNAL_OFFLINE_SIMULATION_USER_H_
-#define CORE_INTERNAL_OFFLINE_SIMULATION_USER_H_
-
-#include <string>
-
-#include "gtest/gtest.h"
-#include "absl/strings/string_view.h"
-#include "core/internal/client_proxy.h"
-#include "core/internal/offline_service_controller.h"
-#include "core/options.h"
-#include "platform/public/atomic_boolean.h"
-#include "platform/public/condition_variable.h"
-#include "platform/public/count_down_latch.h"
-#include "platform/public/future.h"
-
-// Test-only class to help run end-to-end simulations for nearby connections
-// protocol.
-//
-// This is a "standalone" version of PcpManager. It can run independently,
-// provided MediumEnvironment has adequate support for all medium types in use.
-namespace location {
-namespace nearby {
-namespace connections {
-
-class OfflineSimulationUser {
- public:
- struct DiscoveredInfo {
- std::string endpoint_id;
- ByteArray endpoint_info;
- std::string service_id;
-
- bool Empty() const { return endpoint_id.empty(); }
- void Clear() { endpoint_id.clear(); }
- };
-
- explicit OfflineSimulationUser(
- absl::string_view device_name,
- BooleanMediumSelector allowed = BooleanMediumSelector())
- : connection_options_{
- .keep_alive_interval_millis = FeatureFlags::GetInstance()
- .GetFlags()
- .keep_alive_interval_millis,
- .keep_alive_timeout_millis = FeatureFlags::GetInstance()
- .GetFlags()
- .keep_alive_timeout_millis,
- },
- info_{ByteArray{std::string(device_name)}},
- options_{
- .strategy = Strategy::kP2pCluster,
- .allowed = allowed,
- } {}
- virtual ~OfflineSimulationUser() = default;
-
- // Calls PcpManager::StartAdvertising().
- // If latch is provided, will call latch->CountDown() in the initiated_cb
- // callback.
- Status StartAdvertising(const std::string& service_id, CountDownLatch* latch);
-
- // Calls PcpManager::StopAdvertising().
- void StopAdvertising();
-
- // Calls PcpManager::StartDiscovery().
- // If found_latch is provided, will call found_latch->CountDown() in the
- // endpoint_found_cb callback.
- // If lost_latch is provided, will call lost_latch->CountDown() in the
- // endpoint_lost_cb callback.
- Status StartDiscovery(const std::string& service_id,
- CountDownLatch* found_latch,
- CountDownLatch* lost_latch = nullptr);
-
- // Calls PcpManager::StopDiscovery().
- void StopDiscovery();
-
- // Calls PcpManager::InjectEndpoint();
- void InjectEndpoint(const std::string& service_id,
- const OutOfBandConnectionMetadata& metadata);
-
- // Calls PcpManager::RequestConnection().
- // If latch is provided, latch->CountDown() will be called in the initiated_cb
- // callback.
- Status RequestConnection(CountDownLatch* latch);
-
- // Calls PcpManager::AcceptConnection.
- // If latch is provided, latch->CountDown() will be called in the accepted_cb
- // callback.
- Status AcceptConnection(CountDownLatch* latch);
-
- // Calls PcpManager::RejectConnection.
- // If latch is provided, latch->CountDown() will be called in the rejected_cb
- // callback.
- Status RejectConnection(CountDownLatch* latch);
-
- // Unlike acceptance, rejection does not have to be mutual, in order to work.
- // This method will allow to synchronize on the remote rejection, without
- // performing a local rejection.
- // latch.CountDown() will be called in the rejected_cb callback.
- void ExpectRejectedConnection(CountDownLatch& latch) {
- reject_latch_ = &latch;
- }
-
- void ExpectPayload(CountDownLatch& latch) { payload_latch_ = &latch; }
- void ExpectDisconnect(CountDownLatch& latch) { disconnect_latch_ = &latch; }
-
- const DiscoveredInfo& GetDiscovered() const { return discovered_; }
- ByteArray GetInfo() const { return info_; }
-
- bool WaitForProgress(std::function<bool(const PayloadProgressInfo&)> pred,
- absl::Duration timeout);
-
- Payload& GetPayload() { return payload_; }
- void SendPayload(Payload payload) {
- sender_payload_id_ = payload.GetId();
- ctrl_.SendPayload(&client_, {discovered_.endpoint_id}, std::move(payload));
- }
-
- Status CancelPayload() {
- if (sender_payload_id_) {
- return ctrl_.CancelPayload(&client_, sender_payload_id_);
- } else {
- return ctrl_.CancelPayload(&client_, payload_.GetId());
- }
- }
-
- void Disconnect();
-
- bool IsAdvertising() const { return client_.IsAdvertising(); }
-
- bool IsDiscovering() const { return client_.IsDiscovering(); }
-
- bool IsConnected() const {
- return client_.IsConnectedToEndpoint(discovered_.endpoint_id);
- }
-
- void Stop() {
- StopAdvertising();
- StopDiscovery();
- ctrl_.Stop();
- }
-
- protected:
- // ConnectionListener callbacks
- void OnConnectionInitiated(const std::string& endpoint_id,
- const ConnectionResponseInfo& info,
- bool is_outgoing);
- void OnConnectionAccepted(const std::string& endpoint_id);
- void OnConnectionRejected(const std::string& endpoint_id, Status status);
- void OnEndpointDisconnect(const std::string& endpoint_id);
-
- // DiscoveryListener callbacks
- void OnEndpointFound(const std::string& endpoint_id,
- const ByteArray& endpoint_info,
- const std::string& service_id);
- void OnEndpointLost(const std::string& endpoint_id);
-
- // PayloadListener callbacks
- void OnPayload(const std::string& endpoint_id, Payload payload);
- void OnPayloadProgress(const std::string& endpoint_id,
- const PayloadProgressInfo& info);
-
- std::string service_id_;
- DiscoveredInfo discovered_;
- ConnectionOptions connection_options_;
-
- Mutex progress_mutex_;
- ConditionVariable progress_sync_{&progress_mutex_};
- PayloadProgressInfo progress_info_;
- Payload payload_;
- Payload::Id sender_payload_id_ = 0;
- CountDownLatch* initiated_latch_ = nullptr;
- CountDownLatch* accept_latch_ = nullptr;
- CountDownLatch* reject_latch_ = nullptr;
- CountDownLatch* found_latch_ = nullptr;
- CountDownLatch* lost_latch_ = nullptr;
- CountDownLatch* payload_latch_ = nullptr;
- CountDownLatch* disconnect_latch_ = nullptr;
- Future<bool>* future_ = nullptr;
- std::function<bool(const PayloadProgressInfo&)> predicate_;
- ByteArray info_;
- ConnectionOptions options_;
- ClientProxy client_;
- OfflineServiceController ctrl_;
-};
-
-} // namespace connections
-} // namespace nearby
-} // namespace location
-
-#endif // CORE_INTERNAL_OFFLINE_SIMULATION_USER_H_