DebuggerComponent.NetworkInformationWindow.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework;
  8. using GameFramework.Network;
  9. using UnityEngine;
  10. namespace UnityGameFramework.Runtime
  11. {
  12. public sealed partial class DebuggerComponent : GameFrameworkComponent
  13. {
  14. private sealed class NetworkInformationWindow : ScrollableDebuggerWindowBase
  15. {
  16. private NetworkComponent m_NetworkComponent = null;
  17. public override void Initialize(params object[] args)
  18. {
  19. m_NetworkComponent = GameEntry.GetComponent<NetworkComponent>();
  20. if (m_NetworkComponent == null)
  21. {
  22. Log.Fatal("Network component is invalid.");
  23. return;
  24. }
  25. }
  26. protected override void OnDrawScrollableWindow()
  27. {
  28. GUILayout.Label("<b>Network Information</b>");
  29. GUILayout.BeginVertical("box");
  30. {
  31. DrawItem("Network Channel Count", m_NetworkComponent.NetworkChannelCount.ToString());
  32. }
  33. GUILayout.EndVertical();
  34. INetworkChannel[] networkChannels = m_NetworkComponent.GetAllNetworkChannels();
  35. for (int i = 0; i < networkChannels.Length; i++)
  36. {
  37. DrawNetworkChannel(networkChannels[i]);
  38. }
  39. }
  40. private void DrawNetworkChannel(INetworkChannel networkChannel)
  41. {
  42. GUILayout.Label(Utility.Text.Format("<b>Network Channel: {0} ({1})</b>", networkChannel.Name, networkChannel.Connected ? "Connected" : "Disconnected"));
  43. GUILayout.BeginVertical("box");
  44. {
  45. DrawItem("Service Type", networkChannel.ServiceType.ToString());
  46. DrawItem("Address Family", networkChannel.AddressFamily.ToString());
  47. DrawItem("Local Address", networkChannel.Connected ? networkChannel.Socket.LocalEndPoint.ToString() : "Unavailable");
  48. DrawItem("Remote Address", networkChannel.Connected ? networkChannel.Socket.RemoteEndPoint.ToString() : "Unavailable");
  49. DrawItem("Send Packet", Utility.Text.Format("{0} / {1}", networkChannel.SendPacketCount.ToString(), networkChannel.SentPacketCount.ToString()));
  50. DrawItem("Receive Packet", Utility.Text.Format("{0} / {1}", networkChannel.ReceivePacketCount.ToString(), networkChannel.ReceivedPacketCount.ToString()));
  51. DrawItem("Miss Heart Beat Count", networkChannel.MissHeartBeatCount.ToString());
  52. DrawItem("Heart Beat", Utility.Text.Format("{0} / {1}", networkChannel.HeartBeatElapseSeconds.ToString("F2"), networkChannel.HeartBeatInterval.ToString("F2")));
  53. if (networkChannel.Connected)
  54. {
  55. if (GUILayout.Button("Disconnect", GUILayout.Height(30f)))
  56. {
  57. networkChannel.Close();
  58. }
  59. }
  60. }
  61. GUILayout.EndVertical();
  62. }
  63. }
  64. }
  65. }