All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.payneteasy.grpc.longpolling.server.servlet.tap.TapServletHandler Maven / Gradle / Ivy

package com.payneteasy.grpc.longpolling.server.servlet.tap;

import com.payneteasy.grpc.longpolling.common.SingleMessageProducer;
import com.payneteasy.grpc.longpolling.server.servlet.MethodCall;
import com.payneteasy.grpc.longpolling.server.servlet.registry.ITransportRegistry;
import com.payneteasy.grpc.longpolling.server.servlet.registry.StreamHolder;
import com.payneteasy.grpc.longpolling.server.servlet.registry.TransportHolder;
import com.payneteasy.grpc.longpolling.server.servlet.up.UpServerStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

import static com.payneteasy.grpc.longpolling.common.SingleMessageProducer.readFully;

public class TapServletHandler {

    private static final Logger LOG = LoggerFactory.getLogger(TapServletHandler.class);

    private final ITransportRegistry transportRegistry;

    public TapServletHandler(ITransportRegistry aTransportRegistry) {
        transportRegistry = aTransportRegistry;
    }

    public void handle(MethodCall aMethod, HttpServletRequest aRequest) throws IOException {
        // get input
        // send via slots
        // wait for message from grpc
        // write or timeout
        LOG.debug("Finding transport: {}", aMethod.getStreamId().getTransportId());
        TransportHolder transportHolder = transportRegistry.findTransportHolder(aMethod.getStreamId().getTransportId());

        LOG.debug("Finding 'TAP(UP)' stream   : {}", aMethod.getStreamId());

        StreamHolder streamHolder = transportHolder.createTapStream(aMethod.getStreamId(), aMethod.getMethod());
        UpServerStream upStream = streamHolder.getUpStream();

        SingleMessageProducer message = readFully(getClass(), aRequest.getInputStream());
        upStream.sendToGrpc(message);

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy