Ejemplo n.º 1
0
        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);
        }