// relay protocol definitions
namespace Edgegap
{
    public enum ConnectionState : byte
    {
        Disconnected = 0,   // until the user calls connect()
        Checking = 1,       // recently connected, validation in progress
        Valid = 2,          // validation succeeded
        Invalid = 3,        // validation rejected by tower
        SessionTimeout = 4, // session owner timed out
        Error = 5,          // other error
    }

    public enum MessageType : byte
    {
        Ping = 1,
        Data = 2
    }

    public static class Protocol
    {
        // MTU: relay adds up to 13 bytes of metadata in the worst case.
        public const int Overhead = 13;

        // ping interval should be between 100 ms and 1 second.
        // faster ping gives faster authentication, but higher bandwidth.
        public const float PingInterval = 0.5f;
    }
}