private void sendSystemContextMetric() { if (config.getTelemetryConfig().isTelemetryEnabled()) { TelemetryUtils.fetchMetricAndSend(metrics, SystemContextMetric.class, emitter, trackerNamespace, bindingMap); } }
private void sendModuleMetric() { if (config.getTelemetryConfig().isTelemetryEnabled()) { TelemetryUtils.fetchMetricAndSend(metrics, ModulesMetric.class, emitter, trackerNamespace, bindingMap); } }
@Override public void postBegin() { if (config.getTelemetryConfig().isTelemetryEnabled()) { sendModuleMetric(); sendSystemContextMetric(); } lastRecordTime = Instant.now(); }
/** * Refresh the bindingMap who notes user's authorization. * If a new map is added during the game, the authorization functionality could also be used. */ private void refreshBindingMap() { Map<String, Metric> classNameToMetricMap = metrics.getClassNameToMetric(); for (Metric metric : classNameToMetricMap.values()) { TelemetryCategory telemetryCategory = metric.getClass().getAnnotation(TelemetryCategory.class); if (!bindingMap.containsKey(telemetryCategory.id())) { bindingMap.put(telemetryCategory.id(), config.getTelemetryConfig().isTelemetryEnabled()); } List<String> fields = metric.createTelemetryFieldList(); for (String telemetryField : fields) { if (!bindingMap.containsKey(telemetryField)) { bindingMap.put(telemetryField, config.getTelemetryConfig().isTelemetryEnabled()); } } } }
@Override public void initialise() { timeForRefreshMetric = Instant.now(); bindingMap = config.getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); if (bindingMap != null) { refreshBindingMap(); } }
private void setTelemetryDestination(Context rootContext) { Config config = rootContext.get(Config.class); TelemetryConfig telemetryConfig = config.getTelemetryConfig(); String telemetryDestination = telemetryConfig.getTelemetryDestination(); if (telemetryDestination != null) { try { URL url = new URL(telemetryDestination); TelemetryEmitter telemetryEmitter = (TelemetryEmitter) emitter; telemetryEmitter.changeUrl(url); } catch (MalformedURLException e) { logger.error("URL malformed", e); } } else { telemetryConfig.setTelemetryDestination(TelemetryEmitter.getDefaultCollectorURL( DEFAULT_COLLECTOR_PROTOCOL, DEFAULT_COLLECTOR_HOST, DEFAULT_COLLECTOR_PORT).toString()); } }
public GameConfigurationMetric(Context context) { this.context = context; bindingMap = context.get(Config.class).getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); }
public SystemContextMetric(Context context) { bindingMap = context.get(Config.class).getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); osName = System.getProperty("os.name"); osVersion = System.getProperty("os.version"); osArchitecture = System.getProperty("os.arch"); javaVendor = System.getProperty("java.vendor"); javaVersion = System.getProperty("java.version"); jvmName = System.getProperty("java.vm.name"); jvmVersion = System.getProperty("java.vm.version"); contextInCoreRegistry = CoreRegistry.get(Context.class); DisplayDevice display = contextInCoreRegistry.get(DisplayDevice.class); if (!display.isHeadless()) { openGLVendor = GL11.glGetString(GL11.GL_VENDOR); openGLVersion = GL11.glGetString(GL11.GL_VERSION); openGLRenderer = GL11.glGetString(GL11.GL_RENDERER); } else { openGLVendor = "headless"; openGLVersion = "headless"; openGLRenderer = "headless"; } processorNumbers = Runtime.getRuntime().availableProcessors(); memoryMaxByte = Runtime.getRuntime().maxMemory(); }
public GamePlayMetric(Context context) { bindingMap = context.get(Config.class).getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); }
private void addTelemetryLogstashAppender(Context rootContext) { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); TelemetryLogstashAppender telemetryLogstashAppender = new TelemetryLogstashAppender(rootContext); lc.getLogger(Logger.ROOT_LOGGER_NAME).addAppender(telemetryLogstashAppender); Config config = rootContext.get(Config.class); TelemetryConfig telemetryConfig = config.getTelemetryConfig(); String errorReportingDestination = telemetryConfig.getErrorReportingDestination(); if (errorReportingDestination == null) { errorReportingDestination = TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST + ":" + TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT; telemetryConfig.setErrorReportingDestination(errorReportingDestination); } if (telemetryConfig.isErrorReportingEnabled()) { telemetryLogstashAppender.addDestination(errorReportingDestination); telemetryLogstashAppender.start(); } }
/** * Add a listener to the checkbox in the telemetry category row. * If this checkbox is checked, all the sub telemetry fields will be enabled/disabled. */ private void addGroupEnablingListener() { fetchTelemetryCategoriesFromEnvironment(); for (Map.Entry<TelemetryCategory, Class> telemetryCategory: telemetryCategories.entrySet()) { if (!telemetryCategory.getKey().isOneMapMetric()) { UICheckbox uiCheckbox = this.find(telemetryCategory.getKey().id(), UICheckbox.class); if (uiCheckbox == null) { continue; } uiCheckbox.subscribe((checkbox) -> { Map<String, Boolean> bindingMap = config.getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); if (bindingMap.containsKey(telemetryCategory.getKey().id())) { boolean isGroupEnable = bindingMap.get(telemetryCategory.getKey().id()); Set<Field> fields = ReflectionUtils.getFields(telemetryCategory.getValue(), ReflectionUtils.withAnnotation(TelemetryField.class)); for (Field field : fields) { String fieldName = telemetryCategory.getKey().id() + ":" + field.getName(); bindingMap.put(fieldName, isGroupEnable); } } }); } } }
/** * Add a listener to the telemetryEnable checkbox. If the checkbox os enabled/disabled, it will enable/disable all the telemetry field. */ private void addEnablingAllTelemetryListener() { UICheckbox uiCheckbox = this.find("telemetryEnabled", UICheckbox.class); if (uiCheckbox != null) { uiCheckbox.subscribe((checkbox) -> { boolean telemetryEnabled = config.getTelemetryConfig().isTelemetryEnabled(); Map<String, Boolean> bindingMap = config.getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); for (Map.Entry<String, Boolean> entry : bindingMap.entrySet()) { entry.setValue(telemetryEnabled); } fetchTelemetryCategoriesFromEnvironment(); for (Map.Entry<TelemetryCategory, Class> telemetryCategory : telemetryCategories.entrySet()) { UICheckbox categoryBox = this.find(telemetryCategory.getKey().id(), UICheckbox.class); if (categoryBox != null) { categoryBox.setEnabled(telemetryEnabled); } Set<Field> fields = ReflectionUtils.getFields(telemetryCategory.getValue(), ReflectionUtils.withAnnotation(TelemetryField.class)); for (Field field : fields) { String fieldName = telemetryCategory.getKey().id() + ":" + field.getName(); UICheckbox fieldBox = this.find(fieldName, UICheckbox.class); if (fieldBox != null) { fieldBox.setEnabled(telemetryEnabled); } } } }); } }
@Override public void initialise() { setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation()); refreshContent(); WidgetUtil.trySubscribe(this, "back", button -> triggerBackAnimation()); WidgetUtil.tryBindCheckBoxWithListener(this, "telemetryEnabled", BindHelper.bindBeanProperty("telemetryEnabled", config.getTelemetryConfig(), Boolean.TYPE), (checkbox) -> { if (config.getTelemetryConfig().isTelemetryEnabled()) { pushAddServerPopupAndStartEmitter(); } }); WidgetUtil.tryBindCheckBoxWithListener(this, "errorReportingEnabled", BindHelper.bindBeanProperty("errorReportingEnabled", config.getTelemetryConfig(), Boolean.TYPE), (checkbox) -> { if (config.getTelemetryConfig().isErrorReportingEnabled()) { pushAddServerPopupAndStartLogBackAppender(); } else { TelemetryLogstashAppender telemetryLogstashAppender = TelemetryUtils.fetchTelemetryLogstashAppender(); if (telemetryLogstashAppender != null) { telemetryLogstashAppender.stop(); } } }); addEnablingAllTelemetryListener(); }
@Override public void shutdown() { if (config.getTelemetryConfig().isTelemetryEnabled()) { TelemetryUtils.fetchMetricAndSend(metrics, BlockPlacedMetric.class, emitter, trackerNamespace, bindingMap); TelemetryUtils.fetchMetricAndSend(metrics, BlockDestroyedMetric.class, emitter, trackerNamespace, bindingMap); TelemetryUtils.fetchMetricAndSend(metrics, GameConfigurationMetric.class, emitter, trackerNamespace, bindingMap); TelemetryUtils.fetchMetricAndSend(metrics, CreatureKilledMetric.class, emitter, trackerNamespace, bindingMap); TelemetryUtils.fetchMetricAndSend(metrics, GamePlayMetric.class, emitter, trackerNamespace, bindingMap); } } }
@Override public void initialise() { WidgetUtil.tryBindCheckbox(this, "showLaunchPopup", BindHelper.bindBeanProperty("launchPopupDisabled", config.getTelemetryConfig(), Boolean.TYPE)); WidgetUtil.trySubscribe(this, "yes", (button) -> { yesHandler.run(); getManager().popScreen(); }); WidgetUtil.trySubscribe(this, "no", (button) -> { noHandler.run(); getManager().popScreen(); }); WidgetUtil.trySubscribe(this, "option", (button) -> { getManager().popScreen(); optionHandler.run(); }); }
@Override public void postInitialise(Context rootContext) { metrics.initialise(rootContext); // Add the telemetryConfig adapter to context. It could be used in modules. Config config = rootContext.get(Config.class); TelemetryConfig telemetryConfig = config.getTelemetryConfig(); TelemetryConfiguration telemetryConfiguration = new TelemetryConfigurationImpl(telemetryConfig); rootContext.put(TelemetryConfiguration.class, telemetryConfiguration); addTelemetryLogstashAppender(rootContext); setTelemetryDestination(rootContext); }
addServerPopup.removeTip(); ServerInfo serverInfo; TelemetryConfig telemetryConfig = config.getTelemetryConfig(); String telemetryDestination = telemetryConfig.getTelemetryDestination(); if (telemetryDestination != null) { addServerPopup.onCancel((button) -> config.getTelemetryConfig().setTelemetryEnabled(false));
categoryHeader.setFamily("subheading"); UICheckbox uiCheckbox = new UICheckbox(telemetryCategory.id()); Map<String, Boolean> bindingMap = config.getTelemetryConfig().getMetricsUserPermissionConfig().getBindingMap(); if (!bindingMap.containsKey(telemetryCategory.id())) { bindingMap.put(telemetryCategory.id(), config.getTelemetryConfig().isTelemetryEnabled());
addServerPopup.removeTip(); ServerInfo serverInfo; TelemetryConfig telemetryConfig = config.getTelemetryConfig(); if (telemetryConfig.getErrorReportingDestination() != null) { try {
private void pushLaunchPopup() { Config config = context.get(Config.class); TelemetryConfig telemetryConfig = config.getTelemetryConfig(); TranslationSystem translationSystem = context.get(TranslationSystem.class); TelemetryLogstashAppender appender = TelemetryUtils.fetchTelemetryLogstashAppender(); if (!telemetryConfig.isLaunchPopupDisabled()) { String telemetryTitle = translationSystem.translate("${engine:menu#telemetry-launch-popup-title}"); String telemetryMessage = translationSystem.translate("${engine:menu#telemetry-launch-popup-text}"); LaunchPopup telemetryConfirmPopup = nuiManager.pushScreen(LaunchPopup.ASSET_URI, LaunchPopup.class); telemetryConfirmPopup.setMessage(telemetryTitle, telemetryMessage); telemetryConfirmPopup.setYesHandler(() -> { telemetryConfig.setTelemetryAndErrorReportingEnable(true); // Enable error reporting appender.start(); }); telemetryConfirmPopup.setNoHandler(() -> { telemetryConfig.setTelemetryAndErrorReportingEnable(false); // Disable error reporting appender.stop(); }); telemetryConfirmPopup.setOptionButtonText(translationSystem.translate("${engine:menu#telemetry-button}")); telemetryConfirmPopup.setOptionHandler(()-> { nuiManager.pushScreen(TelemetryScreen.ASSET_URI, TelemetryScreen.class); }); } }