1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to you under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.hadoop.hbase.client;
18
19 import org.apache.hadoop.hbase.TableName;
20 import org.apache.hadoop.hbase.classification.InterfaceAudience;
21 import org.apache.hadoop.hbase.ipc.PayloadCarryingRpcController;
22 import org.apache.hadoop.hbase.ipc.RpcControllerFactory;
23
24 /**
25 * This class is used to unify HTable calls with AsyncProcess Framework.
26 * HTable can use AsyncProcess directly though this class.
27 */
28 @InterfaceAudience.Private
29 public abstract class PayloadCarryingServerCallable<T>
30 extends RegionServerCallable<T> implements Cancellable {
31 protected PayloadCarryingRpcController controller;
32
33 public PayloadCarryingServerCallable(Connection connection, TableName tableName, byte[] row,
34 RpcControllerFactory rpcControllerFactory) {
35 super(connection, tableName, row);
36 this.controller = rpcControllerFactory.newController();
37 }
38
39 @Override
40 public void cancel() {
41 controller.startCancel();
42 }
43
44 @Override
45 public boolean isCancelled() {
46 return controller.isCanceled();
47 }
48 }