MiddlewareTransport.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 void Shutdown() => inner.Shutdown();
  18. #region Client
  19. public override void ClientConnect(string address)
  20. {
  21. inner.OnClientConnected = OnClientConnected;
  22. inner.OnClientDataReceived = OnClientDataReceived;
  23. inner.OnClientDisconnected = OnClientDisconnected;
  24. inner.OnClientError = OnClientError;
  25. inner.ClientConnect(address);
  26. }
  27. public override bool ClientConnected() => inner.ClientConnected();
  28. public override void ClientDisconnect() => inner.ClientDisconnect();
  29. public override void ClientSend(ArraySegment<byte> segment, int channelId) => inner.ClientSend(segment, channelId);
  30. #endregion
  31. #region Server
  32. public override bool ServerActive() => inner.ServerActive();
  33. public override void ServerStart()
  34. {
  35. inner.OnServerConnected = OnServerConnected;
  36. inner.OnServerDataReceived = OnServerDataReceived;
  37. inner.OnServerDisconnected = OnServerDisconnected;
  38. inner.OnServerError = OnServerError;
  39. inner.ServerStart();
  40. }
  41. public override void ServerStop() => inner.ServerStop();
  42. public override void ServerSend(int connectionId, ArraySegment<byte> segment, int channelId) => inner.ServerSend(connectionId, segment, channelId);
  43. public override void ServerDisconnect(int connectionId) => inner.ServerDisconnect(connectionId);
  44. public override string ServerGetClientAddress(int connectionId) => inner.ServerGetClientAddress(connectionId);
  45. public override Uri ServerUri() => inner.ServerUri();
  46. #endregion
  47. }
  48. }