Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TransformManyBlock() [5/5]

System.Threading.Tasks.Dataflow.TransformManyBlock< TInput, TOutput >.TransformManyBlock ( Func< TInput, IEnumerable< TOutput > > transformSync,
Func< TInput, Task< IEnumerable< TOutput > > > transformAsync,
ExecutionDataflowBlockOptions dataflowBlockOptions )
inlineprivate

Definition at line 93 of file TransformManyBlock.cs.

94 {
96 if (transformSync == null && transformAsync == null)
97 {
98 throw new ArgumentNullException("transform");
99 }
100 if (dataflowBlockOptions == null)
101 {
102 throw new ArgumentNullException("dataflowBlockOptions");
103 }
106 if (dataflowBlockOptions.BoundedCapacity > 0)
107 {
109 {
110 ((TransformManyBlock<TInput, TOutput>)owningSource)._target.ChangeBoundingCount(-count);
111 };
112 }
114 {
117 if (dataflowBlockOptions.SupportsParallelExecution && dataflowBlockOptions.EnsureOrdered)
118 {
120 {
121 ((TransformManyBlock<TInput, TOutput>)source)._source.AddMessages(messages);
122 });
123 }
124 if (transformSync != null)
125 {
127 {
130 }
131 else
132 {
134 {
135 transformManyBlock.ProcessMessageWithTask(transformAsync, messageWithId);
137 }
138 _target.Completion.ContinueWith(delegate(Task completed, object state)
139 {
141 if (completed.IsFaulted)
142 {
143 sourceCore.AddAndUnwrapAggregateException(completed.Exception);
144 }
145 sourceCore.Complete();
146 }, _source, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
147 _source.Completion.ContinueWith(delegate(Task completed, object state)
148 {
150 dataflowBlock.Fault(completed.Exception);
151 }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
153 {
155 }, _target);
157 if (log.IsEnabled())
158 {
159 log.DataflowBlockCreated(this, dataflowBlockOptions);
160 }
161 }
static TaskContinuationOptions GetContinuationOptions(TaskContinuationOptions toInclude=TaskContinuationOptions.None)
Definition Common.cs:262
static void WireCancellationToComplete(CancellationToken cancellationToken, Task completionTask, Action< object > completeAction, object completeState)
Definition Common.cs:93
readonly ReorderingBuffer< IEnumerable< TOutput > > _reorderingBuffer

References System.Threading.Tasks.Dataflow.TransformManyBlock< TInput, TOutput >._reorderingBuffer, System.Threading.Tasks.Dataflow.TransformManyBlock< TInput, TOutput >._source, System.Threading.Tasks.Dataflow.TransformManyBlock< TInput, TOutput >._target, System.Threading.Tasks.Dataflow.TransformManyBlock< TInput, TOutput >.Completion, System.count, System.Threading.Tasks.TaskScheduler.Default, System.Threading.Tasks.Dataflow.Internal.Common.GetContinuationOptions(), System.Threading.Tasks.Dataflow.Internal.DataflowEtwProvider.Log, System.Threading.CancellationToken.None, System.source, System.state, and System.Threading.Tasks.Dataflow.Internal.Common.WireCancellationToComplete().