KeepAlive.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:1k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2. * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3. * $Id: KeepAlive.cs,v 1.2 2005/04/20 08:45:46 okajima Exp $
  4. */
  5. using System;
  6. using System.Threading;
  7. using System.Diagnostics;
  8. using Poderosa.Connection;
  9. namespace Poderosa.Terminal
  10. {
  11. internal class KeepAlive
  12. {
  13. public KeepAlive() {
  14. }
  15. public void SetTimerToConnectionTag(ConnectionTag ct) {
  16. if(GEnv.Options.KeepAliveInterval==0) {
  17. if(ct.Timer!=null) {
  18. ct.Timer.Dispose();
  19. ct.Timer = null;
  20. }
  21. }
  22. else {
  23. if(ct.Timer==null)
  24. ct.Timer = new Timer(new TimerCallback(OnTimer), ct, GEnv.Options.KeepAliveInterval, Timeout.Infinite);
  25. else
  26. ct.Timer.Change(GEnv.Options.KeepAliveInterval, Timeout.Infinite);
  27. }
  28. }
  29. public void SetTimerToAllConnectionTags() {
  30. foreach(ConnectionTag ct in GEnv.Connections)
  31. SetTimerToConnectionTag(ct);
  32. }
  33. public void ClearTimerToConnectionTag(ConnectionTag ct) {
  34. if(ct.Timer!=null) {
  35. ct.Timer.Dispose();
  36. ct.Timer = null;
  37. }
  38. }
  39. private static void OnTimer(object state) {
  40. ConnectionTag ct = (ConnectionTag)state;
  41. if(!ct.Connection.IsClosed) {
  42. //Debug.WriteLine("Send KA " + ct.Button.Text + ";"+DateTime.Now.ToString());
  43. ct.Connection.SendKeepAliveData();
  44. ct.Timer.Change(GEnv.Options.KeepAliveInterval, Timeout.Infinite);
  45. }
  46. }
  47. }
  48. }