@@ 10,6 10,7 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Linq;
+using System.Net;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
@@ 70,13 71,22 @@ public class FilePacketProvider : IPacketProvider
return new NotFoundError($"Could not find file {_fileName}");
}
+ int successfulLines = 0;
var packets = new SourceList<PacketInfo>();
_index = 0;
- foreach (var line in await File.ReadAllLinesAsync(_fileName))
+ using var file = File.OpenRead(_fileName);
+ using var fileStream = new StreamReader(file);
+ if (fileStream.Peek() != '[')
{
- if (line.Length <= 1)
+ return new GenericError("Looks like the file is not a packet log or in wrong format.");
+ }
+
+ while (!fileStream.EndOfStream)
+ {
+ var line = await fileStream.ReadLineAsync();
+ if (line is null)
{
- continue;
+ break;
}
var splitted = line.Split('\t', 3);
@@ 92,6 102,7 @@ public class FilePacketProvider : IPacketProvider
splitted[1]
)
);
+ successfulLines++;
}
else if (splitted.Length == 3)
{
@@ 105,6 116,7 @@ public class FilePacketProvider : IPacketProvider
splitted[2]
)
);
+ successfulLines++;
}
}