Summary:
clang was using `[[nodiscard]]` with `-std=c++14`, which is okay for clang but not MSVC.
We cannot upgrade to C++17 yet due to a clang 8 issue. That time will come later. In the meantime, this is an alternative to D20377630 "[fbcode][xplat] Upgrade quic and proxygen to C++17"
Reviewed By: yangchi
Differential Revision: D20494128
fbshipit-source-id: a4161a6a76236fe79e0e11553f117396f91a1061
Summary:
This diff:
1) introduces `EnumArray` - effectively an `std::array` indexed by an enum
2) changes loss times and `lastRetransmittablePacketSentTime` inside `LossState` to be an `EnumArray` indexed by `PacketNumberSpace`
3) makes the method `isHandshakeDone()` available for both client and server handshakes.
4) uses all those inputs to determine PTO timers in `earliestTimeAndSpace()`
Reviewed By: yangchi
Differential Revision: D19650864
fbshipit-source-id: d72e4a0cf61d2dcb76f0a7f4037c36a7c8156942