PeerEventsManager.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections.Generic;
  3. namespace ENet
  4. {
  5. public class PeerEventsManager
  6. {
  7. private readonly Dictionary<IntPtr, PeerEvent> peerEvents = new Dictionary<IntPtr, PeerEvent>();
  8. public void Add(IntPtr peer)
  9. {
  10. this.peerEvents.Add(peer, new PeerEvent());
  11. }
  12. public void Remove(IntPtr peer)
  13. {
  14. this.peerEvents.Remove(peer);
  15. }
  16. public PeerEvent this[IntPtr peer]
  17. {
  18. get
  19. {
  20. if (!peerEvents.ContainsKey(peer))
  21. {
  22. throw new KeyNotFoundException("No Peer Key");
  23. }
  24. return peerEvents[peer];
  25. }
  26. }
  27. internal void OnConnected(IntPtr peer, Event e)
  28. {
  29. var peerEvent = peerEvents[peer];
  30. if (peerEvent == null)
  31. {
  32. return;
  33. }
  34. peerEvent.OnConnected(e);
  35. }
  36. internal void OnReceived(IntPtr peer, Event e)
  37. {
  38. var peerEvent = peerEvents[peer];
  39. if (peerEvent == null)
  40. {
  41. return;
  42. }
  43. peerEvent.OnReceived(e);
  44. }
  45. internal void OnDisconnect(IntPtr peer, Event e)
  46. {
  47. var peerEvent = peerEvents[peer];
  48. if (peerEvent == null)
  49. {
  50. return;
  51. }
  52. peerEvent.OnDisconnect(e);
  53. }
  54. }
  55. }