use of com.navercorp.pinpoint.rpc.packet.stream.StreamClosePacket in project pinpoint by naver.
the class StreamChannelManager method messageReceived.
public void messageReceived(StreamPacket packet) {
final int streamChannelId = packet.getStreamChannelId();
final short packetType = packet.getPacketType();
logger.debug("StreamChannel message received. (Channel:{}, StreamId:{}, Packet:{}).", channel, streamChannelId, packet);
if (PacketType.APPLICATION_STREAM_CREATE == packetType) {
handleCreate((StreamCreatePacket) packet);
return;
}
StreamChannel streamChannel = streamChannelRepository.getStreamChannel(streamChannelId);
if (streamChannel == null) {
if (!(PacketType.APPLICATION_STREAM_CLOSE == packetType)) {
write(new StreamClosePacket(streamChannelId, StreamCode.ID_NOT_FOUND));
}
} else {
if (streamChannel instanceof ServerStreamChannel) {
messageReceived((ServerStreamChannel) streamChannel, packet);
} else if (streamChannel instanceof ClientStreamChannel) {
messageReceived((ClientStreamChannel) streamChannel, packet);
} else {
streamChannel.close(StreamCode.UNKNWON_ERROR);
}
}
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamClosePacket in project pinpoint by naver.
the class NettyClientStreamChannel method close.
@Override
public void close(StreamCode code) {
clearStreamChannelResource();
if (!StreamCode.isConnectionError(code)) {
try {
StreamClosePacket packet = new StreamClosePacket(getStreamId(), code);
write(packet);
} catch (Exception e) {
// do nothing
}
}
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamClosePacket in project pinpoint by pinpoint-apm.
the class StreamChannelManager method messageReceived.
public void messageReceived(StreamPacket packet) {
final int streamChannelId = packet.getStreamChannelId();
final short packetType = packet.getPacketType();
logger.debug("StreamChannel message received. (Channel:{}, StreamId:{}, Packet:{}).", channel, streamChannelId, packet);
if (PacketType.APPLICATION_STREAM_CREATE == packetType) {
handleCreate((StreamCreatePacket) packet);
return;
}
StreamChannel streamChannel = streamChannelRepository.getStreamChannel(streamChannelId);
if (streamChannel == null) {
if (!(PacketType.APPLICATION_STREAM_CLOSE == packetType)) {
write(new StreamClosePacket(streamChannelId, StreamCode.ID_NOT_FOUND));
}
} else {
if (streamChannel instanceof ServerStreamChannel) {
messageReceived((ServerStreamChannel) streamChannel, packet);
} else if (streamChannel instanceof ClientStreamChannel) {
messageReceived((ClientStreamChannel) streamChannel, packet);
} else {
streamChannel.close(StreamCode.UNKNWON_ERROR);
}
}
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamClosePacket in project pinpoint by naver.
the class GrpcClientStreamChannelTest method simpleTest.
@Test
public void simpleTest() throws StreamException, InterruptedException {
StreamChannelRepository streamChannelRepository = new StreamChannelRepository();
RecordClientStreamChannelEventHandler recordStreamChannelHandler = new RecordClientStreamChannelEventHandler();
GrpcClientStreamChannel grpcClientStreamChannel = new GrpcClientStreamChannel(mockRemoteAddress, 20, streamChannelRepository, recordStreamChannelHandler);
Assert.assertEquals(StreamChannelStateCode.NEW, grpcClientStreamChannel.getCurrentState());
grpcClientStreamChannel.init();
Assert.assertEquals(StreamChannelStateCode.OPEN, grpcClientStreamChannel.getCurrentState());
Assert.assertEquals(1, streamChannelRepository.size());
CountDownLatch connectCompleteLatch = new CountDownLatch(1);
CountDownLatch threadCompleteLatch = connect(grpcClientStreamChannel, connectCompleteLatch);
final AtomicInteger callCompletedCount = new AtomicInteger(0);
grpcClientStreamChannel.setConnectionObserver(new StreamObserver<Empty>() {
@Override
public void onNext(Empty value) {
}
@Override
public void onError(Throwable t) {
}
@Override
public void onCompleted() {
callCompletedCount.incrementAndGet();
}
});
Assert.assertTrue(connectCompleteLatch.await(1000, TimeUnit.MILLISECONDS));
Assert.assertEquals(StreamChannelStateCode.CONNECT_AWAIT, grpcClientStreamChannel.getCurrentState());
grpcClientStreamChannel.changeStateConnected();
Assert.assertEquals(StreamChannelStateCode.CONNECTED, grpcClientStreamChannel.getCurrentState());
Assert.assertTrue(threadCompleteLatch.await(1000, TimeUnit.MILLISECONDS));
String message = "hello";
grpcClientStreamChannel.handleStreamResponsePacket(new StreamResponsePacket(1, message.getBytes()));
Assert.assertEquals(message, new String(recordStreamChannelHandler.getLastStreamResponsePacket().getPayload()));
Assert.assertEquals(0, callCompletedCount.get());
grpcClientStreamChannel.handleStreamClosePacket(new StreamClosePacket(1, StreamCode.STATE_CLOSED));
Assert.assertEquals(0, streamChannelRepository.size());
Assert.assertEquals(StreamChannelStateCode.CLOSED, grpcClientStreamChannel.getCurrentState());
Assert.assertEquals(1, callCompletedCount.get());
// do nothing
grpcClientStreamChannel.disconnect();
Assert.assertEquals(1, callCompletedCount.get());
grpcClientStreamChannel.close();
Assert.assertEquals(1, callCompletedCount.get());
}
use of com.navercorp.pinpoint.rpc.packet.stream.StreamClosePacket in project pinpoint by naver.
the class ServerStreamChannel method close.
@Override
public void close(StreamCode code) {
clearStreamChannelResource();
if (!StreamCode.isConnectionError(code)) {
try {
StreamClosePacket packet = new StreamClosePacket(getStreamId(), code);
write(packet);
} catch (Exception e) {
// do nothing
}
}
}
Aggregations