internal protected ReceiveEventArgs(EylisMessage message) => this.Message = message;
public virtual void Multicast(EylisMessage message, Func <EylisUser, bool> selector) => this.users.Where(selector).ForEach(u => u.Send(message));
public virtual void Broadcast(EylisMessage message) => this.users.ForEach(user => user.Send(message));
public virtual void Unicast(EylisMessage message, EylisUser user) => this.users.FirstOrDefault(x => x.Equals(user))?.Send(message);