#ifndef PLATFORM_API2_SERVER_SYNC_H_ #define PLATFORM_API2_SERVER_SYNC_H_ #include #include "platform/byte_array.h" #include "absl/strings/string_view.h" namespace location { namespace nearby { // Abstraction that represents a Nearby endpoint exchanging data through // ServerSync Medium. class ServerSyncDevice { public: virtual ~ServerSyncDevice() = default; virtual std::string GetName() const = 0; virtual std::string GetGuid() const = 0; virtual std::string GetOwnGuid() const = 0; }; // Container of operations that can be performed over the Chrome Sync medium. class ServerSyncMedium { public: virtual ~ServerSyncMedium() = default; virtual bool StartAdvertising(absl::string_view service_id, absl::string_view endpoint_id, const ByteArray& endpoint_info) = 0; virtual void StopAdvertising(absl::string_view service_id) = 0; class DiscoveredDeviceCallback { public: virtual ~DiscoveredDeviceCallback() = default; // Called on a new ServerSyncDevice discovery. virtual void OnDeviceDiscovered(ServerSyncDevice* device, absl::string_view service_id, absl::string_view endpoint_id, const ByteArray& endpoint_info) = 0; // Called when ServerSyncDevice is no longer reachable. virtual void OnDeviceLost(ServerSyncDevice* device, absl::string_view service_id) = 0; }; // Returns true once the Chrome Sync scan has been initiated. virtual bool StartDiscovery( absl::string_view service_id, const DiscoveredDeviceCallback& discovered_device_callback) = 0; // Returns true once Chrome Sync scan for service_id is well and truly // stopped; after this returns, there must be no more invocations of the // DiscoveredDeviceCallback passed in to startScanning() for service_id. virtual void StopDiscovery(absl::string_view service_id) = 0; }; } // namespace nearby } // namespace location #endif // PLATFORM_API2_SERVER_SYNC_H_