/* * 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 #ifdef HERMES_ENABLE_DEBUGGER #include #include #include #include #include #include #include #include #include #include namespace facebook { namespace hermes { namespace inspector_modern { 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::jsinspector_modern::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::jsinspector_modern::IInspector& globalInspector_; std::mutex mutex_; std::unordered_map< int, std::shared_ptr> conns_; std::shared_ptr> inspectedContexts_; }; } // namespace chrome } // namespace inspector_modern } // namespace hermes } // namespace facebook #endif // HERMES_ENABLE_DEBUGGER