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);
                }
            }
        }
示例#4
0
 void IAdvertisementBroadcaster.RemoveReceiver(IAdvertisementReceiver receiver)
 {
     broadcaster.RemoveReceiver(receiver);
 }
示例#5
0
 void IAdvertisementBroadcaster.AddReceiver(IAdvertisementReceiver receiver)
 {
     broadcaster.AddReceiver(receiver);
 }
示例#6
0
 void IAdvertisementBroadcaster.Broadcast(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver)
 {
     broadcaster.Broadcast(advertisement, excludeReceiver);
 }
示例#7
0
 protected void BroadcastAdvertisement(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver)
 {
     Broadcaster.Broadcast(advertisement, excludeReceiver);
 }
示例#8
0
 /// <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);
 }