// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.overnet.protocol;

/// Identifies a single overnet stream between two processes on the Overnet
/// mesh.
struct StreamId {
    uint64 id;
};

/// Address of a node on the overlay network.
struct NodeId {
    uint64 id;
};

/// Node-local link label.
alias LinkId = uint64;

/// Length of a transfer key.
const uint32 TRANSFER_KEY_LENGTH = 16;

/// A transfer key is used when moving a stream endpoint from one node to
/// another. It identifies a single transfer, should be unique (so, made from
/// random bytes), and should be discarded at the end of the transfer.
alias TransferKey = array<uint8>:TRANSFER_KEY_LENGTH;
