OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
ParsedTextWriter.cs
1using System;
2using System.IO;
3
4namespace OSDP.Net.Tracing;
5
9public class ParsedTextWriter : IDisposable
10{
11 private readonly StreamWriter _writer;
12 private readonly MessageSpy _messageSpy;
13 private readonly IPacketTextFormatter _formatter;
14 private DateTime _lastPacketTime = DateTime.MinValue;
15
21 public ParsedTextWriter(string outputPath, byte[] securityKey = null)
22 : this(outputPath, securityKey, new OSDPPacketTextFormatter())
23 {
24 }
25
32 public ParsedTextWriter(string outputPath, byte[] securityKey, IPacketTextFormatter formatter)
33 {
34 var directory = Path.GetDirectoryName(outputPath);
35 if (!string.IsNullOrEmpty(directory))
36 Directory.CreateDirectory(directory);
37
38 _writer = new StreamWriter(outputPath, append: true);
39 _messageSpy = new MessageSpy(securityKey);
40 _formatter = formatter;
41 }
42
48 public void WritePacket(byte[] packetData, DateTime timestamp)
49 {
50 TimeSpan? delta = _lastPacketTime > DateTime.MinValue
51 ? timestamp - _lastPacketTime
52 : null;
53 _lastPacketTime = timestamp;
54
55 try
56 {
57 var packet = _messageSpy.ParsePacket(packetData);
58 _writer.Write(_formatter.FormatPacket(packet, timestamp, delta));
59 _writer.Flush();
60 }
61 catch (Exception ex)
62 {
63 _writer.Write(_formatter.FormatError(packetData, timestamp, delta, ex.Message));
64 _writer.Flush();
65 }
66 }
67
69 public void Dispose()
70 {
71 _writer.Dispose();
72 }
73}
Provides functionality to parse and decode OSDP messages from raw byte data, tracking secure channel ...
Definition MessageSpy.cs:21
Default implementation of IPacketTextFormatter for formatting OSDP packets as human-readable text.
ParsedTextWriter(string outputPath, byte[] securityKey, IPacketTextFormatter formatter)
Creates a new ParsedTextWriter with a custom formatter.
void WritePacket(byte[] packetData, DateTime timestamp)
Writes a packet to the output file.
ParsedTextWriter(string outputPath, byte[] securityKey=null)
Creates a new ParsedTextWriter with the default formatter.
Interface for formatting OSDP packets as human-readable text.