Add comment to ExchangeClient
@@ -52,6 +52,19 @@ import static com.google.common.collect.Sets.newConcurrentHashSet;
import static io.airlift.slice.Slices.EMPTY_SLICE;
import static java.util.Objects.requireNonNull;
+/**
+ * {@link ExchangeClient} is the client on receiver side, used in operators requiring data exchange from other tasks,
+ * such as {@link ExchangeOperator} and {@link MergeOperator}.
+ * For each sender that ExchangeClient receives data from, a {@link HttpPageBufferClient} is used in ExchangeClient to communicate with the sender, i.e.
+ *
+ * <pre>
+ * / HttpPageBufferClient_1 - - - Remote Source 1
+ * ExchangeClient -- HttpPageBufferClient_2 - - - Remote Source 2
+ * \ ...
+ * \ HttpPageBufferClient_n - - - Remote Source n
+ * </pre>
+ *
+ */
@ThreadSafe
public class ExchangeClient
implements Closeable
