M src/PacketLogger/Models/Packets/CommsPacketProvider.cs => src/PacketLogger/Models/Packets/CommsPacketProvider.cs +6 -0
@@ 89,4 89,10 @@ public class CommsPacketProvider : IPacketSender
Packets.Add(new PacketInfo(index, DateTime.Now, packetArgs.Source, packetArgs.PacketString));
}
}
+
+ /// <inheritdoc />
+ public void Dispose()
+ {
+ Packets.Dispose();
+ }
}=
\ No newline at end of file
M src/PacketLogger/Models/Packets/DummyPacketProvider.cs => src/PacketLogger/Models/Packets/DummyPacketProvider.cs +2 -2
@@ 70,13 70,13 @@ public class DummyPacketProvider : IPacketProvider, IDisposable
/// <inheritdoc />
public Task<Result> Open()
{
- throw new System.NotImplementedException();
+ return Task.FromResult(Result.FromSuccess());
}
/// <inheritdoc />
public Task<Result> Close()
{
- throw new System.NotImplementedException();
+ return Task.FromResult(Result.FromSuccess());
}
/// <inheritdoc />
M src/PacketLogger/Models/Packets/FilePacketProvider.cs => src/PacketLogger/Models/Packets/FilePacketProvider.cs +6 -0
@@ 119,4 119,10 @@ public class FilePacketProvider : IPacketProvider
/// <inheritdoc />
public event PropertyChangedEventHandler? PropertyChanged;
+
+ /// <inheritdoc/>
+ public void Dispose()
+ {
+ _packets?.Dispose();
+ }
}=
\ No newline at end of file
M src/PacketLogger/Models/Packets/IPacketProvider.cs => src/PacketLogger/Models/Packets/IPacketProvider.cs +2 -1
@@ 4,6 4,7 @@
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
@@ 17,7 18,7 @@ namespace PacketLogger.Models.Packets;
/// <summary>
/// Provides packets from some kind of a source.
/// </summary>
-public interface IPacketProvider : INotifyPropertyChanged
+public interface IPacketProvider : INotifyPropertyChanged, IDisposable
{
/// <summary>
/// Gets whether <see cref="Open"/> was called and successfully finished.
M src/PacketLogger/ViewModels/DockFactory.cs => src/PacketLogger/ViewModels/DockFactory.cs +6 -0
@@ 44,6 44,12 @@ public class DockFactory : Factory, IDisposable
_injector = injector;
}
+ /// <inheritdoc />
+ public override IDockWindow CreateDockWindow()
+ {
+ return base.CreateDockWindow();
+ }
+
/// <summary>
/// Gets the document dock.
/// </summary>
M src/PacketLogger/ViewModels/LogFilterTabViewModel.cs => src/PacketLogger/ViewModels/LogFilterTabViewModel.cs +0 -1
@@ 49,7 49,6 @@ public class LogFilterTabViewModel : ViewModelBase, IDisposable
}
}
);
-
}
/// <summary>
M src/PacketLogger/ViewModels/LogTabViewModel.cs => src/PacketLogger/ViewModels/LogTabViewModel.cs +5 -0
@@ 227,6 227,11 @@ public class LogTabViewModel : ViewModelBase, IDisposable
public void Dispose()
{
TogglePane.Dispose();
+ CopyPackets.Dispose();
+ Clear.Dispose();
_cleanUp.Dispose();
+
+ SendFilter.Dispose();
+ RecvFilter.Dispose();
}
}=
\ No newline at end of file
M src/PacketLogger/ViewModels/PacketLogDocumentViewModel.cs => src/PacketLogger/ViewModels/PacketLogDocumentViewModel.cs +21 -2
@@ 31,7 31,7 @@ using ReactiveUI;
namespace PacketLogger.ViewModels;
/// <inheritdoc />
-public class PacketLogDocumentViewModel : Document, INotifyPropertyChanged
+public class PacketLogDocumentViewModel : Document, INotifyPropertyChanged, IDisposable
{
private readonly CommsInjector _injector;
private readonly NostaleProcesses _processes;
@@ 68,7 68,7 @@ public class PacketLogDocumentViewModel : Document, INotifyPropertyChanged
{
var mainWindow = (App.Current!.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)
?.MainWindow;
- var result = await new OpenFileDialog()
+ var result = await new OpenFileDialog
{
AllowMultiple = false,
InitialFileName = Assembly.GetEntryAssembly()?.GetModules().FirstOrDefault()?.FullyQualifiedName
@@ 184,4 184,23 @@ public class PacketLogDocumentViewModel : Document, INotifyPropertyChanged
/// Gets the command for opening a process / connecting to a process.
/// </summary>
public ReactiveCommand<NostaleProcess, Unit> OpenProcess { get; }
+
+ /// <inheritdoc />
+ public override bool OnClose()
+ {
+ LogViewModel?.Provider.Close().GetAwaiter().GetResult();
+ Dispose();
+ return base.OnClose();
+ }
+
+ /// <inheritdoc />
+ public void Dispose()
+ {
+ _ctSource.Cancel();
+ _ctSource.Dispose();
+ LogViewModel?.Dispose();
+ OpenDummy.Dispose();
+ OpenFile.Dispose();
+ OpenProcess.Dispose();
+ }
}=
\ No newline at end of file