// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_PUBLIC_CPP_BINDINGS_CONNECTION_GROUP_H_ #define MOJO_PUBLIC_CPP_BINDINGS_CONNECTION_GROUP_H_ #include <atomic> #include "base/component_export.h" #include "base/functional/callback.h" #include "base/memory/ref_counted.h" #include "base/task/sequenced_task_runner.h" namespace mojo { // A ConnectionGroup is used to loosely track groups of related interface // receivers. Any Receiver or PendingReceiver can reference a single // ConnectionGroup by holding onto a corresponding Ref. // // Belonging to a connection group is a viral property: if a Receiver belongs to // a connection group, any PendingReceivers arriving in inbound messages // automatically inherit a Ref to the same group. Likewise if a PendingReceiver // belongs to a group, any Receiver which consumes and binds that // PendingReceiver inherits its group membership. class COMPONENT_EXPORT(MOJO_CPP_BINDINGS_BASE) ConnectionGroup : public base::RefCountedThreadSafe<ConnectionGroup> { … }; } // namespace mojo #endif // MOJO_PUBLIC_CPP_BINDINGS_CONNECTION_GROUP_H_