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

◆ TransformBlock() [5/5]

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

Definition at line 92 of file TransformBlock.cs.

93 {
95 if (transformSync == null && transformAsync == null)
96 {
97 throw new ArgumentNullException("transform");
98 }
99 if (dataflowBlockOptions == null)
100 {
101 throw new ArgumentNullException("dataflowBlockOptions");
102 }
105 if (dataflowBlockOptions.BoundedCapacity > 0)
106 {
108 {
109 ((TransformBlock<TInput, TOutput>)owningSource)._target.ChangeBoundingCount(-count);
110 };
111 }
113 {
116 if (dataflowBlockOptions.SupportsParallelExecution && dataflowBlockOptions.EnsureOrdered)
117 {
118 _reorderingBuffer = new ReorderingBuffer<TOutput>(this, delegate(object owningSource, TOutput message)
119 {
120 ((TransformBlock<TInput, TOutput>)owningSource)._source.AddMessage(message);
121 });
122 }
123 if (transformSync != null)
124 {
126 {
129 }
130 else
131 {
133 {
134 transformBlock.ProcessMessageWithTask(transformAsync, messageWithId);
136 }
137 _target.Completion.ContinueWith(delegate(Task completed, object state)
138 {
140 if (completed.IsFaulted)
141 {
142 sourceCore.AddAndUnwrapAggregateException(completed.Exception);
143 }
144 sourceCore.Complete();
145 }, _source, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
146 _source.Completion.ContinueWith(delegate(Task completed, object state)
147 {
149 dataflowBlock.Fault(completed.Exception);
150 }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
152 {
154 }, _target);
156 if (log.IsEnabled())
157 {
158 log.DataflowBlockCreated(this, dataflowBlockOptions);
159 }
160 }
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< TOutput > _reorderingBuffer

References System.Threading.Tasks.Dataflow.TransformBlock< TInput, TOutput >._reorderingBuffer, System.Threading.Tasks.Dataflow.TransformBlock< TInput, TOutput >._source, System.Threading.Tasks.Dataflow.TransformBlock< TInput, TOutput >._target, System.Threading.Tasks.Dataflow.TransformBlock< 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.state, and System.Threading.Tasks.Dataflow.Internal.Common.WireCancellationToComplete().