/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace facebook { namespace hermes { namespace inspector { namespace chrome { /* * ConnectionDemux keeps track of all debuggable Hermes runtimes (called * "pages" in the higher-level React Native API) in this process. See * Registration.h for documentation of the public API. */ class ConnectionDemux { public: explicit ConnectionDemux(facebook::react::IInspector &inspector); ~ConnectionDemux(); ConnectionDemux(const ConnectionDemux &) = delete; ConnectionDemux &operator=(const ConnectionDemux &) = delete; DebugSessionToken enableDebugging( std::unique_ptr adapter, const std::string &title); void disableDebugging(DebugSessionToken session); private: int addPage(std::shared_ptr conn); void removePage(int pageId); facebook::react::IInspector &globalInspector_; std::mutex mutex_; std::unordered_map> conns_; std::shared_ptr> inspectedContexts_; }; } // namespace chrome } // namespace inspector } // namespace hermes } // namespace facebook