void (final Channel channel, final UUID sessionId, final CmdlineRemoteProto.Message.BuilderMessage msg) { //noinspection EnumSwitchStatementWhichMissesCases switch (msg.getType()) { case BUILD_EVENT -> { final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent event = msg.getBuildEvent(); if (event.getEventType() == CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.Type.CUSTOM_BUILDER_MESSAGE && event.hasCustomBuilderMessage()) { final CmdlineRemoteProto.Message.BuilderMessage.BuildEvent.CustomBuilderMessage message = event.getCustomBuilderMessage(); if (!myProject.isDisposed()) { myProject.getMessageBus().syncPublisher(CustomBuilderMessageHandler.TOPIC).messageReceived( message.getBuilderId(), message.getMessageType(), message.getMessageText() ); } } handleBuildEvent(sessionId, event); } case COMPILE_MESSAGE -> { CmdlineRemoteProto.Message.BuilderMessage.CompileMessage compileMessage = msg.getCompileMessage(); handleCompileMessage(sessionId, compileMessage); if (compileMessage.getKind() == CmdlineRemoteProto.Message.BuilderMessage.CompileMessage.Kind.INTERNAL_BUILDER_ERROR) { LOG.error("Internal build error:\n" + compileMessage.getText()); } } case CACHE_DOWNLOAD_MESSAGE -> { CmdlineRemoteProto.Message.BuilderMessage.CacheDownloadMessage cacheDownloadMessage = msg.getCacheDownloadMessage(); ProgressIndicator progressIndicator = getProgressIndicator(); progressIndicator.setIndeterminate(false); // Used only in internal development thus shouldn't be localized @NlsSafe String descriptionText = cacheDownloadMessage.getDescriptionText(); progressIndicator.setText(descriptionText); if (cacheDownloadMessage.hasDone()) { progressIndicator.setFraction(cacheDownloadMessage.getDone()); } } case SAVE_LATEST_DOWNLOAD_STATISTIC_MESSAGE -> { CmdlineRemoteProto.Message.BuilderMessage.CommitAndDownloadStatistics downloadStatisticsMessage = msg.getCommitAndDownloadStatistics(); GitRepositoryUtil.saveLatestDownloadedCommit(downloadStatisticsMessage.getCommit()); CompilerCacheLoadingSettings.saveApproximateDecompressionSpeed(downloadStatisticsMessage.getDecompressionSpeed()); CompilerCacheLoadingSettings.saveApproximateDeletionSpeed(downloadStatisticsMessage.getDeletionSpeed()); } case SAVE_LATEST_BUILT_COMMIT_MESSAGE -> GitRepositoryUtil.saveLatestBuiltMasterCommit(myProject); case CONSTANT_SEARCH_TASK -> { // ignored, because the functionality is deprecated } } }