#include "ipcz/remote_router_link.h"
#include <algorithm>
#include <sstream>
#include <utility>
#include <vector>
#include "ipcz/application_object.h"
#include "ipcz/box.h"
#include "ipcz/node_link.h"
#include "ipcz/node_link_memory.h"
#include "ipcz/node_messages.h"
#include "ipcz/parcel.h"
#include "ipcz/router.h"
#include "util/log.h"
#include "util/safe_math.h"
namespace ipcz {
RemoteRouterLink::RemoteRouterLink(Ref<NodeLink> node_link,
SublinkId sublink,
FragmentRef<RouterLinkState> link_state,
LinkType type,
LinkSide side)
: … { … }
RemoteRouterLink::~RemoteRouterLink() = default;
Ref<RemoteRouterLink> RemoteRouterLink::Create(
Ref<NodeLink> node_link,
SublinkId sublink,
FragmentRef<RouterLinkState> link_state,
LinkType type,
LinkSide side) { … }
void RemoteRouterLink::SetLinkState(FragmentRef<RouterLinkState> state) { … }
LinkType RemoteRouterLink::GetType() const { … }
RouterLinkState* RemoteRouterLink::GetLinkState() const { … }
void RemoteRouterLink::WaitForLinkStateAsync(std::function<void()> callback) { … }
Ref<Router> RemoteRouterLink::GetLocalPeer() { … }
RemoteRouterLink* RemoteRouterLink::AsRemoteRouterLink() { … }
void RemoteRouterLink::AllocateParcelData(size_t num_bytes,
bool allow_partial,
Parcel& parcel) { … }
void RemoteRouterLink::AcceptParcel(std::unique_ptr<Parcel> parcel) { … }
void RemoteRouterLink::AcceptRouteClosure(SequenceNumber sequence_length) { … }
void RemoteRouterLink::AcceptRouteDisconnected() { … }
void RemoteRouterLink::MarkSideStable() { … }
bool RemoteRouterLink::TryLockForBypass(const NodeName& bypass_request_source) { … }
bool RemoteRouterLink::TryLockForClosure() { … }
void RemoteRouterLink::Unlock() { … }
bool RemoteRouterLink::FlushOtherSideIfWaiting() { … }
bool RemoteRouterLink::CanNodeRequestBypass(
const NodeName& bypass_request_source) { … }
void RemoteRouterLink::Deactivate() { … }
void RemoteRouterLink::BypassPeer(const NodeName& bypass_target_node,
SublinkId bypass_target_sublink) { … }
void RemoteRouterLink::StopProxying(SequenceNumber inbound_sequence_length,
SequenceNumber outbound_sequence_length) { … }
void RemoteRouterLink::ProxyWillStop(SequenceNumber inbound_sequence_length) { … }
void RemoteRouterLink::BypassPeerWithLink(
SublinkId new_sublink,
FragmentRef<RouterLinkState> new_link_state,
SequenceNumber inbound_sequence_length) { … }
void RemoteRouterLink::StopProxyingToLocalPeer(
SequenceNumber outbound_sequence_length) { … }
std::string RemoteRouterLink::Describe() const { … }
}