using System; using System.Collections.Generic; using System.Threading.Tasks; using WingsEmu.Game.Networking.Broadcasting; using WingsEmu.Packets; namespace WingsEmu.Game.Networking; public interface IBroadcaster { IReadOnlyList Sessions { get; } void Broadcast(string packet); void Broadcast(T packet, params IBroadcastRule[] rules) where T : IServerPacket; void Broadcast(string packet, params IBroadcastRule[] rules); void Broadcast(IEnumerable packets); void Broadcast(IEnumerable packets, params IBroadcastRule[] rules); void Broadcast(Func generatePacketCallback); void Broadcast(Func generatePacketCallback, params IBroadcastRule[] rules); Task BroadcastAsync(Func> lambdaAsync); Task BroadcastAsync(Func> lambdaAsync, params IBroadcastRule[] rules); void Broadcast(T packet) where T : IPacket; }