DefaultTlsHeartbeat.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Tls
  6. {
  7. public class DefaultTlsHeartbeat
  8. : TlsHeartbeat
  9. {
  10. private readonly int idleMillis, timeoutMillis;
  11. private uint counter = 0U;
  12. public DefaultTlsHeartbeat(int idleMillis, int timeoutMillis)
  13. {
  14. if (idleMillis <= 0)
  15. throw new ArgumentException("must be > 0", "idleMillis");
  16. if (timeoutMillis <= 0)
  17. throw new ArgumentException("must be > 0", "timeoutMillis");
  18. this.idleMillis = idleMillis;
  19. this.timeoutMillis = timeoutMillis;
  20. }
  21. public virtual byte[] GeneratePayload()
  22. {
  23. lock (this)
  24. {
  25. // NOTE: The counter naturally wraps back to 0
  26. return Pack.UInt32_To_BE(++counter);
  27. }
  28. }
  29. public virtual int IdleMillis
  30. {
  31. get { return idleMillis; }
  32. }
  33. public virtual int TimeoutMillis
  34. {
  35. get { return timeoutMillis; }
  36. }
  37. }
  38. }
  39. #pragma warning restore
  40. #endif