protected void RemoveReceiver(IAdvertisementReceiver receiver) { if (receiversByInstanceId.ContainsKey(receiver.InstanceId) == false) { return; } receiversByInstanceId.Remove(receiver.InstanceId); }
protected void AddReceiver(IAdvertisementReceiver receiver) { if (receiversByInstanceId.ContainsKey(receiver.InstanceId)) { return; } receiversByInstanceId.Add(receiver.InstanceId, receiver); }
protected void Broadcast(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver = null) { calledInstanceIds.Clear(); List <IAdvertisementReceiver> mapReceivers = advertisement.Map.GetMapElementsAtCells <IAdvertisementReceiver>(advertisement.BroadcastLocations); foreach (IAdvertisementReceiver mapReceiver in mapReceivers) { if (receiversByInstanceId.ContainsKey(mapReceiver.InstanceId) && calledInstanceIds.Contains(mapReceiver.InstanceId) == false) { if (mapReceiver != excludeReceiver) { mapReceiver.ReceiveAdvertisement(advertisement); } calledInstanceIds.Add(mapReceiver.InstanceId); } } }
void IAdvertisementBroadcaster.RemoveReceiver(IAdvertisementReceiver receiver) { broadcaster.RemoveReceiver(receiver); }
void IAdvertisementBroadcaster.AddReceiver(IAdvertisementReceiver receiver) { broadcaster.AddReceiver(receiver); }
void IAdvertisementBroadcaster.Broadcast(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver) { broadcaster.Broadcast(advertisement, excludeReceiver); }
protected void BroadcastAdvertisement(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver) { Broadcaster.Broadcast(advertisement, excludeReceiver); }
/// <summary> /// Broadcast a given advertisement with an excluded receiver. /// </summary> /// <param name="advertisement">The advertisement to be broadcasted</param> /// <param name="excludeReceiver">A receiver that won't receive that broadcasted advertisement</param> void IAdvertiser.BroadcastAdvertisement(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver) => BroadcastAdvertisement(advertisement, excludeReceiver);
/// <summary> /// Broadcast an advertisement to a single advertisement receiver. /// </summary> void BroadcastToReceiver(IAdvertisement advertisement, IAdvertisementReceiver receiver) { receiver.ReceiveAdvertisement(advertisement); }