Search in sources :

Example 1 with ServerStreamChannelContext

use of com.navercorp.pinpoint.rpc.stream.ServerStreamChannelContext in project pinpoint by naver.

the class StreamRouteHandler method onRoute0.

private TCommandTransferResponse onRoute0(StreamEvent event) {
    TBase<?, ?> requestObject = event.getRequestObject();
    if (requestObject == null) {
        return createResponse(TRouteResult.EMPTY_REQUEST);
    }
    TargetClusterPoint clusterPoint = findClusterPoint(event.getDeliveryCommand());
    if (clusterPoint == null) {
        return createResponse(TRouteResult.NOT_FOUND);
    }
    if (!clusterPoint.isSupportCommand(requestObject)) {
        return createResponse(TRouteResult.NOT_SUPPORTED_REQUEST);
    }
    try {
        if (clusterPoint instanceof PinpointServerClusterPoint) {
            StreamRouteManager routeManager = new StreamRouteManager(event);
            ServerStreamChannelContext consumerContext = event.getStreamChannelContext();
            consumerContext.setAttributeIfAbsent(ATTACHMENT_KEY, routeManager);
            ClientStreamChannelContext producerContext = createStreamChannel((PinpointServerClusterPoint) clusterPoint, event.getDeliveryCommand().getPayload(), routeManager);
            if (producerContext.getCreateFailPacket() == null) {
                routeManager.setProducer(producerContext.getStreamChannel());
                producerContext.getStreamChannel().addStateChangeEventHandler(routeManager);
                return createResponse(TRouteResult.OK);
            }
        } else {
            return createResponse(TRouteResult.NOT_SUPPORTED_SERVICE);
        }
    } catch (Exception e) {
        if (logger.isWarnEnabled()) {
            logger.warn("Create StreamChannel({}) failed. Error:{}", clusterPoint, e.getMessage(), e);
        }
    }
    return createResponse(TRouteResult.UNKNOWN);
}
Also used : TargetClusterPoint(com.navercorp.pinpoint.collector.cluster.TargetClusterPoint) ClientStreamChannelContext(com.navercorp.pinpoint.rpc.stream.ClientStreamChannelContext) ServerStreamChannelContext(com.navercorp.pinpoint.rpc.stream.ServerStreamChannelContext) PinpointServerClusterPoint(com.navercorp.pinpoint.collector.cluster.PinpointServerClusterPoint)

Aggregations

PinpointServerClusterPoint (com.navercorp.pinpoint.collector.cluster.PinpointServerClusterPoint)1 TargetClusterPoint (com.navercorp.pinpoint.collector.cluster.TargetClusterPoint)1 ClientStreamChannelContext (com.navercorp.pinpoint.rpc.stream.ClientStreamChannelContext)1 ServerStreamChannelContext (com.navercorp.pinpoint.rpc.stream.ServerStreamChannelContext)1