MiddlewareTransport.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using UnityEngine;
  3. namespace Mirror
  4. {
  5. /// <summary>
  6. /// Allows Middleware to override some of the transport methods or let the inner transport handle them.
  7. /// </summary>
  8. [DisallowMultipleComponent]
  9. public abstract class MiddlewareTransport : Transport
  10. {
  11. /// <summary>
  12. /// Transport to call to after middleware
  13. /// </summary>
  14. public Transport inner;
  15. public override bool Available() => inner.Available();
  16. public override int GetMaxPacketSize(int channelId = 0) => inner.GetMaxPacketSize(channelId);
  17. public override int GetBatchThreshold(int channelId = Channels.Reliable) => inner.GetBatchThreshold(channelId);
  18. public override void Shutdown() => inner.Shutdown();
  19. #region Client
  20. public override void ClientConnect(string address)
  21. {
  22. inner.OnClientConnected = OnClientConnected;
  23. inner.OnClientDataReceived = OnClientDataReceived;
  24. inner.OnClientDisconnected = OnClientDisconnected;
  25. inner.OnClientError = OnClientError;
  26. inner.ClientConnect(address);
  27. }
  28. public override bool ClientConnected() => inner.ClientConnected();
  29. public override void ClientDisconnect() => inner.ClientDisconnect();
  30. public override void ClientSend(ArraySegment<byte> segment, int channelId) => inner.ClientSend(segment, channelId);
  31. public override void ClientEarlyUpdate() => inner.ClientEarlyUpdate();
  32. public override void ClientLateUpdate() => inner.ClientLateUpdate();
  33. #endregion
  34. #region Server
  35. public override bool ServerActive() => inner.ServerActive();
  36. public override void ServerStart()
  37. {
  38. inner.OnServerConnected = OnServerConnected;
  39. inner.OnServerDataReceived = OnServerDataReceived;
  40. inner.OnServerDisconnected = OnServerDisconnected;
  41. inner.OnServerError = OnServerError;
  42. inner.ServerStart();
  43. }
  44. public override void ServerStop() => inner.ServerStop();
  45. public override void ServerSend(int connectionId, ArraySegment<byte> segment, int channelId) => inner.ServerSend(connectionId, segment, channelId);
  46. public override void ServerDisconnect(int connectionId) => inner.ServerDisconnect(connectionId);
  47. public override string ServerGetClientAddress(int connectionId) => inner.ServerGetClientAddress(connectionId);
  48. public override Uri ServerUri() => inner.ServerUri();
  49. public override void ServerEarlyUpdate() => inner.ServerEarlyUpdate();
  50. public override void ServerLateUpdate() => inner.ServerLateUpdate();
  51. #endregion
  52. }
  53. }