|
20 | 20 | package org.apache.iotdb.commons.pipe.config.constant; |
21 | 21 |
|
22 | 22 | import org.apache.iotdb.commons.i18n.PipeMessages; |
| 23 | +import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters; |
23 | 24 |
|
24 | 25 | import java.util.Arrays; |
25 | 26 | import java.util.Collections; |
26 | 27 | import java.util.HashSet; |
| 28 | +import java.util.List; |
| 29 | +import java.util.Map; |
27 | 30 | import java.util.Set; |
28 | 31 |
|
29 | 32 | public class PipeSourceConstant { |
@@ -87,6 +90,10 @@ public class PipeSourceConstant { |
87 | 90 | public static final String SOURCE_FORWARDING_PIPE_REQUESTS_KEY = |
88 | 91 | "source.forwarding-pipe-requests"; |
89 | 92 | public static final boolean EXTRACTOR_FORWARDING_PIPE_REQUESTS_DEFAULT_VALUE = true; |
| 93 | + public static final List<String> FORWARDING_PIPE_REQUESTS_KEYS = |
| 94 | + Collections.unmodifiableList( |
| 95 | + Arrays.asList( |
| 96 | + EXTRACTOR_FORWARDING_PIPE_REQUESTS_KEY, SOURCE_FORWARDING_PIPE_REQUESTS_KEY)); |
90 | 97 |
|
91 | 98 | public static final String EXTRACTOR_HISTORY_ENABLE_KEY = "extractor.history.enable"; |
92 | 99 | public static final String SOURCE_HISTORY_ENABLE_KEY = "source.history.enable"; |
@@ -137,7 +144,16 @@ public class PipeSourceConstant { |
137 | 144 | public static final boolean EXTRACTOR_MODE_SNAPSHOT_DEFAULT_VALUE = false; |
138 | 145 | public static final String EXTRACTOR_MODE_DOUBLE_LIVING_KEY = "extractor.mode.double-living"; |
139 | 146 | public static final String SOURCE_MODE_DOUBLE_LIVING_KEY = "source.mode.double-living"; |
| 147 | + public static final String EXTRACTOR_DOUBLE_LIVING_KEY = "extractor.double-living"; |
| 148 | + public static final String SOURCE_DOUBLE_LIVING_KEY = "source.double-living"; |
140 | 149 | public static final boolean EXTRACTOR_MODE_DOUBLE_LIVING_DEFAULT_VALUE = false; |
| 150 | + public static final List<String> DOUBLE_LIVING_KEYS = |
| 151 | + Collections.unmodifiableList( |
| 152 | + Arrays.asList( |
| 153 | + EXTRACTOR_MODE_DOUBLE_LIVING_KEY, |
| 154 | + SOURCE_MODE_DOUBLE_LIVING_KEY, |
| 155 | + EXTRACTOR_DOUBLE_LIVING_KEY, |
| 156 | + SOURCE_DOUBLE_LIVING_KEY)); |
141 | 157 |
|
142 | 158 | public static final String EXTRACTOR_START_TIME_KEY = "extractor.start-time"; |
143 | 159 | public static final String SOURCE_START_TIME_KEY = "source.start-time"; |
@@ -195,6 +211,31 @@ public class PipeSourceConstant { |
195 | 211 | public static final String EXTRACTOR_CONSENSUS_RECEIVER_DATANODE_ID_KEY = |
196 | 212 | "extractor.consensus.receiver-dn-id"; |
197 | 213 |
|
| 214 | + public static boolean isDoubleLiving(final PipeParameters sourceParameters) { |
| 215 | + return sourceParameters.getBooleanOrDefault( |
| 216 | + DOUBLE_LIVING_KEYS, EXTRACTOR_MODE_DOUBLE_LIVING_DEFAULT_VALUE); |
| 217 | + } |
| 218 | + |
| 219 | + public static void removeDoubleLivingAttributes(final Map<String, String> sourceAttributes) { |
| 220 | + removeEquivalentAttributes(sourceAttributes, DOUBLE_LIVING_KEYS); |
| 221 | + } |
| 222 | + |
| 223 | + public static void disableForwardingPipeRequests(final Map<String, String> sourceAttributes) { |
| 224 | + removeEquivalentAttributes(sourceAttributes, FORWARDING_PIPE_REQUESTS_KEYS); |
| 225 | + sourceAttributes.put(SOURCE_FORWARDING_PIPE_REQUESTS_KEY, Boolean.FALSE.toString()); |
| 226 | + } |
| 227 | + |
| 228 | + private static void removeEquivalentAttributes( |
| 229 | + final Map<String, String> sourceAttributes, final List<String> equivalentKeys) { |
| 230 | + final Set<String> reducedKeys = |
| 231 | + equivalentKeys.stream() |
| 232 | + .map(PipeParameters.KeyReducer::reduce) |
| 233 | + .collect(java.util.stream.Collectors.toSet()); |
| 234 | + sourceAttributes |
| 235 | + .keySet() |
| 236 | + .removeIf(key -> reducedKeys.contains(PipeParameters.KeyReducer.reduce(key))); |
| 237 | + } |
| 238 | + |
198 | 239 | private PipeSourceConstant() { |
199 | 240 | throw new IllegalStateException(PipeMessages.UTILITY_CLASS); |
200 | 241 | } |
|
0 commit comments