internal static int Run(int engineRequestTimeoutMS) { // check to see if metadata binary exists string telemetryMetadataFile = Path.Combine(FileLocationManager.GetTelemetrySharePath(), FileLocationManager.METADATA_BINARY_FILE_NAME); TelemetryDashboardMain.Logger.Log("Trying to get metadata binary file: " + telemetryMetadataFile, LogLevel.Debug); TelemetryMetadata oldMeta, newMetadata; if (File.Exists(telemetryMetadataFile)) { TelemetryDashboardMain.Logger.Log("Found metadata file, will load contents.", LogLevel.Info); Stream openFileStream = File.OpenRead(telemetryMetadataFile); BinaryFormatter deserializer = new BinaryFormatter(); oldMeta = (TelemetryMetadata)deserializer.Deserialize(openFileStream); openFileStream.Close(); } else { oldMeta = new TelemetryMetadata(); } newMetadata = new TelemetryMetadata(true); GetAboutServiceInfo(newMetadata); GetRepositoryExtensions(newMetadata); GetRepositoryExtensionSchemas(newMetadata); GetRepositoryEngineInfos(newMetadata); GetRepositoryUsers(newMetadata); GetRepositoryApps(newMetadata); IList <UnparsedSheet> unparsedSheets = GetRepositorySheets(); newMetadata.ParseSheets(unparsedSheets); newMetadata.PopulateFromCachedMetadata(oldMeta); string centralNodeHost; if (!TelemetryDashboardMain.ArgsManager.UseLocalEngine) { centralNodeHost = GetCentralNodeHostname(); TelemetryDashboardMain.Logger.Log("Got central node hostname for engine calls: " + centralNodeHost, LogLevel.Info); } else { centralNodeHost = CertificateConfigHelpers.Hostname; TelemetryDashboardMain.Logger.Log("Arg '-uselocalengine' was used. Using hostname '" + centralNodeHost + "' for all engine calls.", LogLevel.Info); } GetEngineObjects(centralNodeHost, newMetadata, engineRequestTimeoutMS); Stream SaveFileStream = File.Create(telemetryMetadataFile); BinaryFormatter serializer = new BinaryFormatter(); serializer.Serialize(SaveFileStream, newMetadata); SaveFileStream.Close(); MetadataWriter.DeleteMetadataFiles(); MetadataWriter.WriteMetadataToFile(newMetadata); return(0); }