]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/thrift/lib/java/src/org/apache/thrift/TBaseProcessor.java
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / java / src / org / apache / thrift / TBaseProcessor.java
1 package org.apache.thrift;
2
3 import java.util.Collections;
4 import java.util.Map;
5
6 import org.apache.thrift.protocol.TMessage;
7 import org.apache.thrift.protocol.TMessageType;
8 import org.apache.thrift.protocol.TProtocol;
9 import org.apache.thrift.protocol.TProtocolUtil;
10 import org.apache.thrift.protocol.TType;
11
12 public abstract class TBaseProcessor<I> implements TProcessor {
13 private final I iface;
14 private final Map<String,ProcessFunction<I, ? extends TBase>> processMap;
15
16 protected TBaseProcessor(I iface, Map<String, ProcessFunction<I, ? extends TBase>> processFunctionMap) {
17 this.iface = iface;
18 this.processMap = processFunctionMap;
19 }
20
21 public Map<String,ProcessFunction<I, ? extends TBase>> getProcessMapView() {
22 return Collections.unmodifiableMap(processMap);
23 }
24
25 @Override
26 public void process(TProtocol in, TProtocol out) throws TException {
27 TMessage msg = in.readMessageBegin();
28 ProcessFunction fn = processMap.get(msg.name);
29 if (fn == null) {
30 TProtocolUtil.skip(in, TType.STRUCT);
31 in.readMessageEnd();
32 TApplicationException x = new TApplicationException(TApplicationException.UNKNOWN_METHOD, "Invalid method name: '"+msg.name+"'");
33 out.writeMessageBegin(new TMessage(msg.name, TMessageType.EXCEPTION, msg.seqid));
34 x.write(out);
35 out.writeMessageEnd();
36 out.getTransport().flush();
37 } else {
38 fn.process(msg.seqid, in, out, iface);
39 }
40 }
41 }