1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.ipc;
19
20 import java.util.List;
21
22 import org.apache.hadoop.conf.Configuration;
23 import org.apache.hadoop.hbase.CellScannable;
24 import org.apache.hadoop.hbase.CellScanner;
25 import org.apache.hadoop.hbase.classification.InterfaceAudience;
26 import org.apache.hadoop.hbase.util.ReflectionUtils;
27
28
29
30
31 @InterfaceAudience.Private
32 public class RpcControllerFactory {
33
34 public static final String CUSTOM_CONTROLLER_CONF_KEY = "hbase.rpc.controllerfactory.class";
35 protected final Configuration conf;
36
37 public RpcControllerFactory(Configuration conf) {
38 this.conf = conf;
39 }
40
41 public PayloadCarryingRpcController newController() {
42 return new PayloadCarryingRpcController();
43 }
44
45 public PayloadCarryingRpcController newController(final CellScanner cellScanner) {
46 return new PayloadCarryingRpcController(cellScanner);
47 }
48
49 public PayloadCarryingRpcController newController(final List<CellScannable> cellIterables) {
50 return new PayloadCarryingRpcController(cellIterables);
51 }
52
53
54 public static RpcControllerFactory instantiate(Configuration configuration) {
55 String rpcControllerFactoryClazz =
56 configuration.get(CUSTOM_CONTROLLER_CONF_KEY,
57 RpcControllerFactory.class.getName());
58 return ReflectionUtils.instantiateWithCustomCtor(rpcControllerFactoryClazz,
59 new Class[] { Configuration.class }, new Object[] { configuration });
60 }
61 }