12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /**
- * Copyright (c) 2019 Paul-Louis Ageneau
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- */
- #ifndef RTC_RELIABILITY_H
- #define RTC_RELIABILITY_H
- #include "common.hpp"
- #include <chrono>
- namespace rtc {
- struct Reliability {
- // It true, the channel does not enforce message ordering and out-of-order delivery is allowed
- bool unordered = false;
- // If both maxPacketLifeTime or maxRetransmits are unset, the channel is reliable.
- // If either maxPacketLifeTime or maxRetransmits is set, the channel is unreliable.
- // (The settings are exclusive so both maxPacketLifetime and maxRetransmits must not be set.)
- // Time window during which transmissions and retransmissions may occur
- optional<std::chrono::milliseconds> maxPacketLifeTime;
- // Maximum number of retransmissions that are attempted
- optional<unsigned int> maxRetransmits;
- // For backward compatibility, do not use
- enum class Type { Reliable = 0, Rexmit, Timed };
- union {
- Type typeDeprecated = Type::Reliable;
- [[deprecated("Use maxPacketLifeTime or maxRetransmits")]] Type type;
- };
- variant<int, std::chrono::milliseconds> rexmit = 0;
- };
- } // namespace rtc
- #endif
|