/* * 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 namespace facebook::react { class WeakFamilyRegistry final { public: using WeakFamilies = std::vector; void add(const ShadowNodeFamily::Shared& shadowNodeFamily) const; void removeFamiliesWithSurfaceId(SurfaceId surfaceId) const; WeakFamilies weakFamiliesForSurfaceId(SurfaceId surfaceId) const; private: /** * Mutex protecting `families_` property. */ mutable std::mutex familiesMutex_; /** * A map of ShadowNodeFamily used on surface. */ mutable std::unordered_map families_{}; }; } // namespace facebook::react