Hao Hao has uploaded this change for review. ( http://gerrit.cloudera.org:8080/14329
Change subject: [java] process communicates via protobuf-based protocol ...................................................................... [java] process communicates via protobuf-based protocol This commit adds a java tool that can communicate with other process via protobuf-based protocol over standard input/output. It is useful in cases a Kudu process (e.g. master) needs to talk to third-party libraries written in Java. This tool has: 1) a single reader(producer) thread that continuously reads protobuf-based messages (with optional JSON encoding) from the standard input and puts the messages to a FIFO blocking queue; 2) multiple writer(consumer) threads that continuously retrieve the messages from the queue, process them and write the responses to the standard output. To support a new protobuf message type, simply extend the 'ProtocolProcessor' interface to specify how to handle the message type. Change-Id: Iaf9ad24dbc9acc681284b6433836271b5b4c7982 --- M CMakeLists.txt M java/gradle/dependencies.gradle A java/kudu-subprocess/build.gradle A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/EchoProtocolProcessor.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageConsumer.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageProcessor.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageProducer.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/ProtocolProcessor.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessCommandLine.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessCommandLineParser.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessMain.java A java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessRuntimeException.java A java/kudu-subprocess/src/main/resources/log4j.properties A java/kudu-subprocess/src/test/java/org/apache/kudu/subprocess/MessageTest.java A java/kudu-subprocess/src/test/java/org/apache/kudu/subprocess/TestMessageProcessor.java A java/kudu-subprocess/src/test/java/org/apache/kudu/subprocess/TestMessageProducerConsumer.java M java/settings.gradle A src/kudu/subprocess/CMakeLists.txt A src/kudu/subprocess/subprocess.proto 20 files changed, 1,481 insertions(+), 0 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/29/14329/1 -- To view, visit http://gerrit.cloudera.org:8080/14329 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Iaf9ad24dbc9acc681284b6433836271b5b4c7982 Gerrit-Change-Number: 14329 Gerrit-PatchSet: 1 Gerrit-Owner: Hao Hao <[email protected]>
