diff options
author | gjoranv <gv@verizonmedia.com> | 2021-03-29 21:14:20 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2021-03-29 21:14:20 +0200 |
commit | 2c7ee7bc9d3e588f11ce23d66f8c111109c8a2fc (patch) | |
tree | 148ff85b5ea211859cdc863ab24fe568060e78d0 /container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java | |
parent | 09cbb21dbfba2c80660945c84b1b2d9a0fffaf24 (diff) |
Add source code from jdisc_mbus_service into container-messagebus.
Diffstat (limited to 'container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java')
-rw-r--r-- | container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java new file mode 100644 index 00000000000..fb5657a9215 --- /dev/null +++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java @@ -0,0 +1,59 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.messagebus.jdisc; + +import com.yahoo.jdisc.Request; +import com.yahoo.jdisc.handler.AbstractRequestHandler; +import com.yahoo.jdisc.handler.CompletionHandler; +import com.yahoo.jdisc.handler.ContentChannel; +import com.yahoo.jdisc.handler.ResponseHandler; +import com.yahoo.messagebus.Message; +import com.yahoo.messagebus.MessageHandler; +import com.yahoo.messagebus.Reply; +import com.yahoo.messagebus.ReplyHandler; + +/** + * @author Simon Thoresen Hult + */ +public abstract class MbusRequestHandler extends AbstractRequestHandler implements MessageHandler { + + @Override + public ContentChannel handleRequest(final Request request, final ResponseHandler handler) { + if (!(request instanceof MbusRequest)) { + throw new UnsupportedOperationException("Expected MbusRequest, got " + request.getClass().getName() + "."); + } + final Message msg = ((MbusRequest)request).getMessage(); + msg.pushHandler(new RespondingReplyHandler(handler)); + handleMessage(msg); + return null; + } + + private static class RespondingReplyHandler implements ReplyHandler { + + private final ResponseHandler handler; + + RespondingReplyHandler(final ResponseHandler handler) { + this.handler = handler; + } + + @Override + public void handleReply(final Reply reply) { + final MbusResponse response = new MbusResponse(StatusCodes.fromMbusReply(reply), reply); + handler.handleResponse(response).close(IgnoringCompletionHandler.INSTANCE); + } + } + + private static class IgnoringCompletionHandler implements CompletionHandler { + + public static final IgnoringCompletionHandler INSTANCE = new IgnoringCompletionHandler(); + + @Override + public void completed() { + + } + + @Override + public void failed(final Throwable t) { + + } + } +} |