// 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;
};

/// 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;
};
