// 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
using LinkId = uint64;

/// Reliability and ordering constraints for a stream.
enum ReliabilityAndOrdering {
    /// Datagrams are delivered reliably in an ordered fashion.
    ReliableOrdered = 1;
    /// Datagrams are delivered unreliably, yet order between messages is maintained.
    UnreliableOrdered = 2;
    /// Datagrams are delivered reliably, but may be delivered out of order.
    ReliableUnordered = 3;
    /// No guarantees on ordering or reliability. Note that messages will be delivered
    /// at most once.
    UnreliableUnordered = 4;
    /// Messages are delivered in order. The most recently sent message is considered
    /// reliable, while all other messages are considered unreliable.
    TailReliable = 5;
};
