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; } }
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); } }