public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken))
        {
            base.WriteMetadata(writer);

            String subFolder = this.project.Folder + "\\" + this.SubFolder;

            if (Directory.Exists(subFolder) == false)
            {
                writer.WriteLineInfo("!!!   Folder does not exist! Data stream is missing!");
                writer.WriteLineWarning(this.Name + ": Folder does not exist! Data stream is missing!");
                return;
            }

            // MARKERTIME logs
            string[] files2 = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.txt");
            if (files2.Count() > 0)
            {
                MarkerEvents.Clear();
                foreach (string fpath in files2)
                {
                    using (StreamReader reader = File.OpenText(fpath))
                    {
                        string line     = "";
                        int    line_num = 1;
                        while ((line = reader.ReadLine()) != null)
                        {
                            cancelletionToken.ThrowIfCancellationRequested();
                            String[] linesp = line.Split(',');

                            if (linesp.Count() < 6)
                            {
                                writer.WriteLineInfo("\tMarker TXT file is invalid : " + fpath + " line: " + line_num);
                                writer.WriteLineWarning(this.Name + ":Marker TXT file is invalid: " + fpath + " line: " + line_num);
                                continue;
                            }

                            String tss = linesp[5];

                            double tow;
                            if (Double.TryParse(tss, out tow) == false)
                            {
                                writer.WriteLineInfo("\tMarker TXT file is invalid : " + fpath + " line: " + line_num);
                                writer.WriteLineWarning(this.Name + ":Marker TXT file is invalid: " + fpath + " line: " + line_num);
                                break;
                            }

                            //if (Convert.ToDouble(linesp[4]) < 0.00015) continue;

                            double   days = Math.Floor(tow / 3600.00 / 24.0);
                            TimeSpan tod  = TimeSpan.FromSeconds(tow - days * 24.0 * 3600.0);
                            DateTime ts   = this.StartTime.Date + tod;

                            EvenMarkerDataLine evnt = new EvenMarkerDataLine(ts, TimeType.GPS);
                            if (linesp[2] == "EventA")
                            {
                                evnt.Port = EvenMarkerDataLine.MarkerEventPort.EventA;
                            }
                            else if (linesp[2] == "EventB")
                            {
                                evnt.Port = EvenMarkerDataLine.MarkerEventPort.EventB;
                            }
                            else
                            {
                                evnt.Port = EvenMarkerDataLine.MarkerEventPort.Unknown;
                            }

                            MarkerEvents.Add(evnt);

                            line_num++;
                        }
                    }
                }
                //writer.WriteLineInfo("\t             Length of observ. : " + (new TimeSpan(endTime.Ticks - startTime.Ticks)).ToString(@"hh\:mm\:ss"));
                writer.WriteLineInfo("\t   Number of #MARKTIMEA events : " + MarkerEvents.Count());
                writer.WriteLineInfo("\t              First event time : " + MarkerEvents.Min(m => m.TimeStamp).ToString("yyyy-MM-dd HH:mm:ss"));
                writer.WriteLineInfo("\t               Last event time : " + MarkerEvents.Max(m => m.TimeStamp).ToString("yyyy-MM-dd HH:mm:ss"));

                // check event consistency
                for (int i = 1; i < this.MarkerEvents.Count(); i++)
                {
                    TimeSpan dt = this.MarkerEvents[i].TimeStamp - this.MarkerEvents[i - 1].TimeStamp;
                    if (dt.TotalSeconds > 10)
                    {
                        writer.WriteLineWarning("-- Event time jump in " + this.ShortName + " between " +
                                                this.MarkerEvents[i - 1].TimeStamp.ToString("HH:mm:ss") + " and " + this.MarkerEvents[i].TimeStamp.ToString("HH:mm:ss") + " dt =" + dt.TotalSeconds);
                    }
                }
                this.OrderDataLines();
            }
            else
            {
                writer.WriteLineInfo("\tNo marker TXT file!");
                writer.WriteLineWarning(this.Name + ":No marker TXT file!");
            }
        }
 public void SetAnchorEvent(MarkerEvents anchorEvent)
 {
     this._markerEvent = anchorEvent;
 }