示例#1
0
        private void RunMethod()
        {
            if (!Directory.Exists(PreferenceManager.Manager.Preferences.System.LogFilePath))
            {
                throw new Exception("Directory does not exist");
            }

            // Clear raw file
            if (File.Exists(_rawFilename))
            {
                File.Delete(_rawFilename);
            }

            using (FileStream fs = File.Create(_rawFilename))
            {
                while (_isLogging)
                {
                    while (!_dataLog.Empty())
                    {
                        DataPacket packet = _dataLog.Dequeue();
                        if (packet == null)
                        {
                            continue;
                        }

                        // Write raw as backup
                        byte[] raw = FormatRaw.ToRaw(packet.Bytes);
                        fs.Write(raw, 0, raw.Length);
                    }
                    Thread.Sleep(5);
                }
            }

            // Clear pretty file
            if (File.Exists(_prettyFilename))
            {
                File.Delete(_prettyFilename);
            }

            using (StreamWriter sw = new StreamWriter(_prettyFilename))
            {
                string header = FormatPretty.PrettyHeader(_dataLog.GetCurrentSession().Mapping.Loggables());
                sw.WriteLine(header);

                byte[] fileBytes = File.ReadAllBytes(_rawFilename);

                byte[][] frames = FormatRaw.FromRaw(fileBytes);

                Session sessionCopy = _dataLog.GetCurrentSession();

                foreach (byte[] frame in frames)
                {
                    sessionCopy.UpdateComponents(frame);
                    // Write pretty
                    string pretty = FormatPretty.PrettyLine(sessionCopy.SystemTime, sessionCopy.Mapping.Loggables());
                    //string pretty = FormatWriter.PrettyLine(stopWatch.ElapsedMilliseconds, packet.Bytes, _dataLog.GetCurrentSession().Mapping.Loggables());
                    sw.WriteLine(pretty);
                }
            }


            // Write preferences to log
            using (StreamWriter sw = new StreamWriter(_settingsFilename, false))
            {
                string text = JsonConvert.SerializeObject(PreferenceManager.Manager.Preferences);
                sw.Write(text);
            }
        }