fake_message_stream_lookup.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_QUICK_PAIR_MESSAGE_STREAM_FAKE_MESSAGE_STREAM_LOOKUP_H_
  5. #define ASH_QUICK_PAIR_MESSAGE_STREAM_FAKE_MESSAGE_STREAM_LOOKUP_H_
  6. #include "ash/quick_pair/message_stream/message_stream_lookup.h"
  7. #include <string>
  8. #include "base/containers/flat_map.h"
  9. #include "base/observer_list.h"
  10. namespace ash {
  11. namespace quick_pair {
  12. class MessageStream;
  13. // Exposes a MessageStream instance to consumers for a specific device, if
  14. // available. Observes the BluetoothAdapter for devices connected and
  15. // disconnect and opens and closes RFCOMM channels to the device as
  16. // appropriate, and creates and maintains MessageStream instances for each
  17. // device.
  18. class FakeMessageStreamLookup : public MessageStreamLookup {
  19. public:
  20. FakeMessageStreamLookup();
  21. FakeMessageStreamLookup(const FakeMessageStreamLookup&) = delete;
  22. FakeMessageStreamLookup& operator=(const FakeMessageStreamLookup&) = delete;
  23. ~FakeMessageStreamLookup() override;
  24. void AddObserver(Observer* observer) override;
  25. void RemoveObserver(Observer* observer) override;
  26. MessageStream* GetMessageStream(const std::string& device_address) override;
  27. void AddMessageStream(const std::string& device_address,
  28. MessageStream* message_stream);
  29. void RemoveMessageStream(const std::string& device_address);
  30. void NotifyMessageStreamConnected(const std::string& device_address,
  31. MessageStream* message_stream);
  32. private:
  33. base::flat_map<std::string, MessageStream*> message_streams_;
  34. base::ObserverList<Observer> observers_;
  35. };
  36. } // namespace quick_pair
  37. } // namespace ash
  38. #endif // ASH_QUICK_PAIR_MESSAGE_STREAM_FAKE_MESSAGE_STREAM_LOOKUP_H_