1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.ipc;
21
22 import com.google.protobuf.Descriptors;
23 import com.google.protobuf.Message;
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
26 import org.apache.hadoop.hbase.util.ByteStringer;
27
28
29
30
31 @InterfaceAudience.Private
32 public final class CoprocessorRpcUtils {
33
34
35
36
37 private static String hbaseServicePackage;
38 static {
39 Descriptors.ServiceDescriptor clientService = ClientProtos.ClientService.getDescriptor();
40 hbaseServicePackage = clientService.getFullName()
41 .substring(0, clientService.getFullName().lastIndexOf(clientService.getName()));
42 }
43
44 private CoprocessorRpcUtils() {
45
46 }
47
48
49
50
51
52
53
54 public static String getServiceName(Descriptors.ServiceDescriptor service) {
55 if (service.getFullName().startsWith(hbaseServicePackage)) {
56 return service.getName();
57 }
58 return service.getFullName();
59 }
60
61
62
63
64 public static ClientProtos.CoprocessorServiceCall buildServiceCall(byte[] row,
65 Descriptors.MethodDescriptor method, Message request) {
66 return ClientProtos.CoprocessorServiceCall.newBuilder()
67 .setRow(ByteStringer.wrap(row))
68 .setServiceName(CoprocessorRpcUtils.getServiceName(method.getService()))
69 .setMethodName(method.getName())
70 .setRequest(request.toByteString()).build();
71 }
72 }