use of com.navercorp.pinpoint.rpc.packet.stream.StreamCode in project pinpoint by naver.
the class ServerStreamChannel method handleStreamCreatePacket.
public void handleStreamCreatePacket(StreamCreatePacket packet) throws StreamException {
changeStateTo(StreamChannelStateCode.CONNECT_ARRIVED, true);
StreamCode result = streamChannelMessageHandler.handleStreamCreatePacket(this, packet);
if (result != StreamCode.OK) {
throw new StreamException(result);
}
changeStateConnected();
sendCreateSuccess();
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamCode 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);
}
ClusterPoint<?> clusterPoint = findClusterPoint(event.getDeliveryCommand());
if (clusterPoint == null) {
return createResponse(TRouteResult.NOT_FOUND);
}
if (!clusterPoint.isSupportCommand(requestObject)) {
logger.warn("Create StreamChannel failed. target:{}, message:{} is not supported command", clusterPoint, requestObject.getClass().getName());
return createResponse(TRouteResult.NOT_SUPPORTED_REQUEST);
}
try {
if (clusterPoint instanceof ThriftAgentConnection) {
StreamRouteManager routeManager = new StreamRouteManager(event);
ServerStreamChannel consumerStreamChannel = event.getStreamChannel();
consumerStreamChannel.setAttributeIfAbsent(ATTACHMENT_KEY, routeManager);
ClientStreamChannel producerStreamChannel = createStreamChannel((ThriftAgentConnection) clusterPoint, event.getDeliveryCommand().getPayload(), routeManager);
routeManager.setProducer(producerStreamChannel);
return createResponse(TRouteResult.OK);
} else if (clusterPoint instanceof GrpcAgentConnection) {
StreamRouteManager routeManager = new StreamRouteManager(event);
ServerStreamChannel consumerStreamChannel = event.getStreamChannel();
consumerStreamChannel.setAttributeIfAbsent(ATTACHMENT_KEY, routeManager);
ClientStreamChannel producerStreamChannel = ((GrpcAgentConnection) clusterPoint).openStream(event.getRequestObject(), routeManager);
routeManager.setProducer(producerStreamChannel);
return createResponse(TRouteResult.OK);
} else {
return createResponse(TRouteResult.NOT_SUPPORTED_SERVICE);
}
} catch (StreamException e) {
StreamCode streamCode = e.getStreamCode();
return createResponse(TRouteResult.STREAM_CREATE_ERROR, streamCode.name());
} catch (Exception e) {
if (logger.isWarnEnabled()) {
logger.warn("Create StreamChannel failed. target:{}, message:{}", clusterPoint, e.getMessage(), e);
}
}
return createResponse(TRouteResult.UNKNOWN);
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamCode in project pinpoint by naver.
the class ActiveThreadCountWorker method connect.
@Override
public StreamChannel connect(AgentInfo agentInfo) {
if (!applicationName.equals(agentInfo.getApplicationName())) {
return null;
}
if (!agentId.equals(agentInfo.getAgentId())) {
return null;
}
synchronized (lock) {
if (!started) {
started = true;
logger.info("ActiveThreadCountWorker start. applicationName:{}, agentId:{}", applicationName, agentId);
StreamChannel streamChannel = null;
try {
streamChannel = connect0(agentInfo);
return streamChannel;
} catch (StreamException streamException) {
if (streamChannel != null) {
streamChannel.close(streamException.getStreamCode());
}
StreamCode streamCode = streamException.getStreamCode();
if (streamCode == StreamCode.CONNECTION_NOT_FOUND) {
workerActiveManager.addReactiveWorker(agentInfo);
}
setDefaultErrorMessage(streamCode.name());
} catch (TException exception) {
if (streamChannel != null) {
streamChannel.close(StreamCode.TYPE_UNKNOWN);
}
setDefaultErrorMessage(TRouteResult.NOT_SUPPORTED_REQUEST.name());
}
}
}
return null;
}
Aggregations