Example #1
0
		void BroadcastProcess ()
		{
			T input;

			if (!messageQueue.TryTake (out input) || targets.Current == null)
				return;

			foreach (var target in targets) {
				DataflowMessageHeader header = headers.Increment ();
				if (cloner != null)
					vault.StoreMessage (header, input);
				target.OfferMessage (header, input, this, cloner != null);
				// TODO: verify if it's the correct semantic
				T save = input;
				if (!messageQueue.TryTake (out input))
					input = save;
			}
		}
Example #2
0
        void BroadcastProcess()
        {
            T input;

            if (!messageQueue.TryTake(out input) || targets.Current == null)
            {
                return;
            }

            foreach (var target in targets)
            {
                DataflowMessageHeader header = headers.Increment();
                if (cloner != null)
                {
                    vault.StoreMessage(header, input);
                }
                target.OfferMessage(header, input, this, cloner != null);
            }
        }