public Response handle(CustomMessage message, DrillBuf dBody) throws RpcException { final ParsingHandler<?, ?> handler; try (@SuppressWarnings("unused") Closeable lock = read.open()) { handler = handlers.get(message.getType()); } if (handler == null) { throw new UserRpcException( endpoint, "Unable to handle message.", new IllegalStateException(String.format( "Unable to handle message. The message type provided [%d] did not have a registered handler.", message.getType()))); } final CustomResponse<?> customResponse = handler.onMessage(message.getMessage(), dBody); @SuppressWarnings("unchecked") final CustomMessage responseMessage = CustomMessage.newBuilder() .setMessage( ByteString.copyFrom(((Controller.CustomSerDe<Object>) handler.getResponseSerDe()) .serializeToSend(customResponse .getMessage()))) .setType(message.getType()) .build(); // make sure we don't pass in a null array. final ByteBuf[] dBodies = customResponse.getBodies() == null ? new DrillBuf[0] : customResponse.getBodies(); return new Response(RpcType.RESP_CUSTOM, responseMessage, dBodies); }
/** * Send a message using a custom listener. * @param listener * The listener to inform of the outcome of the sent message. * @param messageToSend * The structured message to send. * @param dataBodies * One or more optional unstructured messages to append to the structure message. */ public void send(RpcOutcomeListener<RECEIVE> listener, SEND messageToSend, ByteBuf... dataBodies) { final CustomMessage customMessage = CustomMessage.newBuilder() .setMessage(ByteString.copyFrom(send.serializeToSend(messageToSend))) .setType(messageTypeId) .build(); manager.runCommand(new CustomMessageSender(new CustomTunnelListener(listener), customMessage, dataBodies)); }
/** * Send a message and receive a future for monitoring the outcome. * @param messageToSend * The structured message to send. * @param dataBodies * One or more optional unstructured messages to append to the structure message. * @return The CustomFuture that can be used to wait for the response. */ public CustomFuture<RECEIVE> send(SEND messageToSend, ByteBuf... dataBodies) { final CustomMessage customMessage = CustomMessage.newBuilder() .setMessage(ByteString.copyFrom(send.serializeToSend(messageToSend))) .setType(messageTypeId) .build(); final SyncCustomMessageSender b = new SyncCustomMessageSender(customMessage, dataBodies); manager.runCommand(b); DrillRpcFuture<CustomMessage> innerFuture = b.getFuture(); return new CustomFuture<RECEIVE>(receive, innerFuture); }
public Builder toBuilder() { return newBuilder(this); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.apache.drill.exec.proto.BitControl.CustomMessage prototype) {
public static Builder newBuilder(org.apache.drill.exec.proto.BitControl.CustomMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); }
public org.apache.drill.exec.proto.BitControl.CustomMessage.Builder newMessage() { return org.apache.drill.exec.proto.BitControl.CustomMessage.newBuilder(); } public java.lang.String getFieldName(int number)
public Builder toBuilder() { return newBuilder(this); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.apache.drill.exec.proto.BitControl.CustomMessage prototype) {
public static Builder newBuilder(org.apache.drill.exec.proto.BitControl.CustomMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); }
public org.apache.drill.exec.proto.BitControl.CustomMessage.Builder newMessage() { return org.apache.drill.exec.proto.BitControl.CustomMessage.newBuilder(); } public java.lang.String getFieldName(int number)