// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_ #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_ #include <cstddef> #include <functional> #include <memory> #include <string> #include <utility> #include "ipcz/fragment_ref.h" #include "ipcz/link_type.h" #include "ipcz/node_name.h" #include "ipcz/router_link_state.h" #include "ipcz/sequence_number.h" #include "ipcz/sublink_id.h" #include "util/ref_counted.h" namespace ipcz { class NodeLink; class Parcel; class RemoteRouterLink; class Router; // A RouterLink represents one endpoint of a link between two Routers. All // subclasses must be thread-safe. // // NOTE: Implementations of this class must take caution when calling into // Routers, since such calls may re-enter the RouterLink implementation to // deactivate it. As a general rule, calls into Router should be made using a // Router reference owned on the calling stack rather than a reference owned by // the RouterLink. class RouterLink : public RefCounted<RouterLink> { … }; } // namespace ipcz #endif // IPCZ_SRC_IPCZ_ROUTER_LINK_H_