private DriftMethodInvocation( MethodInvoker invoker, MethodMetadata metadata, Map<String, String> headers, List<Object> parameters, RetryPolicy retryPolicy, AddressSelector<A> addressSelector, Optional<String> addressSelectionContext, MethodInvocationStat stat, Ticker ticker) { this.invoker = requireNonNull(invoker, "methodHandler is null"); this.metadata = requireNonNull(metadata, "metadata is null"); this.headers = requireNonNull(headers, "headers is null"); this.parameters = requireNonNull(parameters, "parameters is null"); this.retryPolicy = requireNonNull(retryPolicy, "retryPolicy is null"); this.addressSelector = requireNonNull(addressSelector, "addressSelector is null"); this.addressSelectionContext = requireNonNull(addressSelectionContext, "addressSelectionContext is null"); this.stat = requireNonNull(stat, "stat is null"); this.ticker = requireNonNull(ticker, "ticker is null"); this.startTime = ticker.read(); // if this invocation is canceled, cancel the tasks super.addListener(() -> { if (super.isCancelled()) { onCancel(wasInterrupted()); } }, directExecutor()); }
private DriftMethodInvocation( MethodInvoker invoker, MethodMetadata metadata, Map<String, String> headers, List<Object> parameters, RetryPolicy retryPolicy, AddressSelector<A> addressSelector, Optional<String> addressSelectionContext, MethodInvocationStat stat, Ticker ticker) { this.invoker = requireNonNull(invoker, "methodHandler is null"); this.metadata = requireNonNull(metadata, "metadata is null"); this.headers = requireNonNull(headers, "headers is null"); this.parameters = requireNonNull(parameters, "parameters is null"); this.retryPolicy = requireNonNull(retryPolicy, "retryPolicy is null"); this.addressSelector = requireNonNull(addressSelector, "addressSelector is null"); this.addressSelectionContext = requireNonNull(addressSelectionContext, "addressSelectionContext is null"); this.stat = requireNonNull(stat, "stat is null"); this.ticker = requireNonNull(ticker, "ticker is null"); this.startTime = ticker.read(); // if this invocation is canceled, cancel the tasks super.addListener(() -> { if (super.isCancelled()) { onCancel(wasInterrupted()); } }, directExecutor()); }