public void send()

in apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/profile/ProfileSnapshotSender.java [72:115]


    public void send(List<TracingThreadSnapshot> buffer) {
        if (status == GRPCChannelStatus.CONNECTED) {
            try {
                final GRPCStreamServiceStatus status = new GRPCStreamServiceStatus(false);
                StreamObserver<ThreadSnapshot> snapshotStreamObserver = profileTaskStub.withDeadlineAfter(
                    GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS
                ).collectSnapshot(
                    new StreamObserver<Commands>() {
                        @Override
                        public void onNext(
                            Commands commands) {
                        }

                        @Override
                        public void onError(
                            Throwable throwable) {
                            status.finished();
                            if (LOGGER.isErrorEnable()) {
                                LOGGER.error(
                                    throwable,
                                    "Send profile segment snapshot to collector fail with a grpc internal exception."
                                );
                            }
                            ServiceManager.INSTANCE.findService(GRPCChannelManager.class).reportError(throwable);
                        }

                        @Override
                        public void onCompleted() {
                            status.finished();
                        }
                    }
                );
                for (TracingThreadSnapshot snapshot : buffer) {
                    final ThreadSnapshot transformSnapshot = snapshot.transform();
                    snapshotStreamObserver.onNext(transformSnapshot);
                }

                snapshotStreamObserver.onCompleted();
                status.wait4Finish();
            } catch (Throwable t) {
                LOGGER.error(t, "Send profile segment snapshot to backend fail.");
            }
        }
    }