Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
QuerySettings.cs
Go to the documentation of this file.
3
5
6internal struct QuerySettings
7{
9
11
13
15
17
18 private int _queryId;
19
21 {
22 get
23 {
24 return _cancellationState;
25 }
26 set
27 {
29 }
30 }
31
33 {
34 get
35 {
36 return _taskScheduler;
37 }
38 set
39 {
41 }
42 }
43
44 internal int? DegreeOfParallelism
45 {
46 get
47 {
49 }
50 set
51 {
53 }
54 }
55
57 {
58 get
59 {
60 return _executionMode;
61 }
62 set
63 {
65 }
66 }
67
69 {
70 get
71 {
72 return _mergeOptions;
73 }
74 set
75 {
77 }
78 }
79
80 internal int QueryId => _queryId;
81
82 internal static QuerySettings Empty => new QuerySettings(null, null, CancellationToken.None, null, null);
83
84 internal QuerySettings(TaskScheduler taskScheduler, int? degreeOfParallelism, CancellationToken externalCancellationToken, ParallelExecutionMode? executionMode, ParallelMergeOptions? mergeOptions)
85 {
86 _taskScheduler = taskScheduler;
87 _degreeOfParallelism = degreeOfParallelism;
88 _cancellationState = new CancellationState(externalCancellationToken);
89 _executionMode = executionMode;
90 _mergeOptions = mergeOptions;
91 _queryId = -1;
92 }
93
94 internal QuerySettings Merge(QuerySettings settings2)
95 {
96 if (TaskScheduler != null && settings2.TaskScheduler != null)
97 {
99 }
100 if (DegreeOfParallelism.HasValue && settings2.DegreeOfParallelism.HasValue)
101 {
103 }
105 {
107 }
108 if (ExecutionMode.HasValue && settings2.ExecutionMode.HasValue)
109 {
111 }
112 if (MergeOptions.HasValue && settings2.MergeOptions.HasValue)
113 {
115 }
116 TaskScheduler taskScheduler = ((TaskScheduler == null) ? settings2.TaskScheduler : TaskScheduler);
117 int? degreeOfParallelism = (DegreeOfParallelism.HasValue ? DegreeOfParallelism : settings2.DegreeOfParallelism);
118 CancellationToken externalCancellationToken = (CancellationState.ExternalCancellationToken.CanBeCanceled ? CancellationState.ExternalCancellationToken : settings2.CancellationState.ExternalCancellationToken);
119 ParallelExecutionMode? executionMode = (ExecutionMode.HasValue ? ExecutionMode : settings2.ExecutionMode);
120 ParallelMergeOptions? mergeOptions = (MergeOptions.HasValue ? MergeOptions : settings2.MergeOptions);
121 return new QuerySettings(taskScheduler, degreeOfParallelism, externalCancellationToken, executionMode, mergeOptions);
122 }
123
128
129 internal QuerySettings WithPerExecutionSettings(CancellationTokenSource topLevelCancellationTokenSource, Shared<bool> topLevelDisposedFlag)
130 {
132 result.CancellationState.InternalCancellationTokenSource = topLevelCancellationTokenSource;
134 result.CancellationState.TopLevelDisposedFlag = topLevelDisposedFlag;
135 result._queryId = PlinqEtwProvider.NextQueryId();
136 return result;
137 }
138
140 {
141 QuerySettings result = this;
142 if (result.TaskScheduler == null)
143 {
144 result.TaskScheduler = TaskScheduler.Default;
145 }
146 if (!result.DegreeOfParallelism.HasValue)
147 {
148 result.DegreeOfParallelism = Scheduling.GetDefaultDegreeOfParallelism();
149 }
150 if (!result.ExecutionMode.HasValue)
151 {
152 result.ExecutionMode = ParallelExecutionMode.Default;
153 }
154 if (!result.MergeOptions.HasValue)
155 {
156 result.MergeOptions = ParallelMergeOptions.Default;
157 }
158 if (result.MergeOptions == ParallelMergeOptions.Default)
159 {
160 result.MergeOptions = ParallelMergeOptions.AutoBuffered;
161 }
162 return result;
163 }
164
169}
CancellationTokenSource InternalCancellationTokenSource
CancellationTokenSource MergedCancellationTokenSource
static int GetDefaultDegreeOfParallelism()
Definition Scheduling.cs:7
static string ParallelQuery_DuplicateMergeOptions
Definition SR.cs:44
static string ParallelQuery_DuplicateDOP
Definition SR.cs:32
static string ParallelQuery_DuplicateWithCancellation
Definition SR.cs:42
static string ParallelQuery_DuplicateTaskScheduler
Definition SR.cs:30
static string ParallelQuery_DuplicateExecutionMode
Definition SR.cs:34
Definition SR.cs:7
static CancellationTokenSource CreateLinkedTokenSource(CancellationToken token1, CancellationToken token2)
ParallelExecutionMode? _executionMode
QuerySettings WithPerExecutionSettings(CancellationTokenSource topLevelCancellationTokenSource, Shared< bool > topLevelDisposedFlag)
QuerySettings Merge(QuerySettings settings2)
QuerySettings(TaskScheduler taskScheduler, int? degreeOfParallelism, CancellationToken externalCancellationToken, ParallelExecutionMode? executionMode, ParallelMergeOptions? mergeOptions)
ParallelExecutionMode? ExecutionMode
ParallelMergeOptions? MergeOptions
ParallelMergeOptions? _mergeOptions