ActorMessageSenderComponent.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Collections.Generic;
  2. namespace ETModel
  3. {
  4. public class ActorMessageSenderComponent: Component
  5. {
  6. public readonly Dictionary<long, ActorMessageSender> ActorMessageSenders = new Dictionary<long, ActorMessageSender>();
  7. public override void Dispose()
  8. {
  9. if (this.IsDisposed)
  10. {
  11. return;
  12. }
  13. base.Dispose();
  14. foreach (ActorMessageSender actorMessageSender in this.ActorMessageSenders.Values)
  15. {
  16. actorMessageSender.Dispose();
  17. }
  18. this.ActorMessageSenders.Clear();
  19. }
  20. public ActorMessageSender Get(long id)
  21. {
  22. if (this.ActorMessageSenders.TryGetValue(id, out ActorMessageSender actorMessageSender))
  23. {
  24. return actorMessageSender;
  25. }
  26. actorMessageSender = ComponentFactory.CreateWithId<ActorMessageSender>(id);
  27. actorMessageSender.Parent = this;
  28. this.ActorMessageSenders[id] = actorMessageSender;
  29. return actorMessageSender;
  30. }
  31. public ActorMessageSender GetWithActorId(long actorId)
  32. {
  33. if (this.ActorMessageSenders.TryGetValue(actorId, out ActorMessageSender actorMessageSender))
  34. {
  35. return actorMessageSender;
  36. }
  37. actorMessageSender = ComponentFactory.CreateWithId<ActorMessageSender, long>(actorId, actorId);
  38. actorMessageSender.Parent = this;
  39. this.ActorMessageSenders[actorId] = actorMessageSender;
  40. return actorMessageSender;
  41. }
  42. public void Remove(long id)
  43. {
  44. ActorMessageSender actorMessageSender;
  45. if (!this.ActorMessageSenders.TryGetValue(id, out actorMessageSender))
  46. {
  47. return;
  48. }
  49. this.ActorMessageSenders.Remove(id);
  50. actorMessageSender.Dispose();
  51. }
  52. }
  53. }