/* * 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 { namespace react { class WeakFamilyRegistry final { public: using WeakFamilies = std::vector; void add(ShadowNodeFamily::Shared const &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 react } // namespace facebook