Horizon

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 20  →  ?path2? @ 21
/Horizon/MainForm.cs
@@ -173,6 +173,7 @@
_horizonNetworkShare.Events.ClientConnected += Events_ClientConnected;
_horizonNetworkShare.Events.ClientDisconnected += Events_ClientDisconnected;
_horizonNetworkShare.Events.MessageReceived += Events_MessageReceived;
_horizonNetworkShare.Events.ExceptionEncountered += Events_ExceptionEncountered;
#pragma warning disable CS4014
_horizonNetworkShare.Start();
#pragma warning restore CS4014
@@ -196,6 +197,11 @@
case CheckState.Unchecked:
if (_horizonNetworkShare != null)
{
_horizonNetworkShare.Events.ClientConnected -= Events_ClientConnected;
_horizonNetworkShare.Events.ClientDisconnected -= Events_ClientDisconnected;
_horizonNetworkShare.Events.MessageReceived -= Events_MessageReceived;
_horizonNetworkShare.Events.ExceptionEncountered -= Events_ExceptionEncountered;
 
_horizonNetworkShare.Dispose();
_horizonNetworkShare = null;
}
@@ -215,11 +221,16 @@
async () => { await SaveConfiguration(); }, _cancellationToken);
}
 
private void Events_ExceptionEncountered(object sender, ExceptionEventArgs e)
{
Log.Error(e.Exception,$"Client threw exception.");
}
 
private async void Events_MessageReceived(object sender, MessageReceivedEventArgs e)
{
Log.Information($"Client {e.Client.IpPort} sent {e.Data.Length} bytes via network sharing.");
Log.Information($"Client {e.Client?.IpPort} sent {e.Data?.Length} bytes via network sharing.");
 
if (e.Data.Length == 0)
if (e.Data?.Length == 0)
{
return;
}
@@ -232,22 +243,22 @@
 
await _snapshotDatabase.ApplyTransferSnapshotAsync(completeSnapshot, _cancellationToken);
 
Log.Information($"Stored {completeSnapshot.Name} from {e.Client.IpPort}");
Log.Information($"Stored {completeSnapshot.Name} from {e.Client?.IpPort}");
}
catch (Exception exception)
{
Log.Error(exception, $"Failed to process network share from {e.Client.IpPort}.");
Log.Error(exception, $"Failed to process network share from {e.Client?.IpPort}.");
}
}
 
private void Events_ClientDisconnected(object sender, WatsonTcp.DisconnectionEventArgs e)
{
Log.Information($"Client {e.Client.IpPort} disconnected from network sharing.");
Log.Information($"Client {e.Client?.IpPort} disconnected from network sharing.");
}
 
private void Events_ClientConnected(object sender, WatsonTcp.ConnectionEventArgs e)
{
Log.Information($"Client {e.Client.IpPort} connected to network sharing.");
Log.Information($"Client {e.Client?.IpPort} connected to network sharing.");
}
 
private void WindowToolStripMenuItem_Click(object sender, EventArgs e)
/Horizon/Snapshots/DataGridViewRowProgress.cs
@@ -13,6 +13,11 @@
Success = success;
}
 
public DataGridViewRowProgress(bool success)
{
Success = success;
}
 
#endregion
 
#region Public Enums, Properties and Fields
/Horizon/Snapshots/DataGridViewRowProgressFailure.cs
@@ -13,6 +13,11 @@
Exception = exception;
}
 
public DataGridViewRowProgressFailure(Exception exception) : base(false)
{
Exception = exception;
}
 
#endregion
 
#region Public Enums, Properties and Fields
/Horizon/Snapshots/SnapshotManagerForm.cs
@@ -707,7 +707,10 @@
var discoveredServiceMenuItem = new ToolStripMenuItem(service.Name, null, OnShareWithNodeClicked);
discoveredServiceMenuItem.Tag = service;
 
shareToToolStripMenuItem.DropDownItems.Add(discoveredServiceMenuItem);
this.InvokeIfRequired(form =>
{
form.shareToToolStripMenuItem.DropDownItems.Add(discoveredServiceMenuItem);
});
}
 
private async void OnShareWithNodeClicked(object sender, EventArgs e)
@@ -1558,10 +1561,10 @@
{
var client = new WatsonTcpClient($"{service.HostEntry.AddressList[0]}", service.UPort);
client.Events.MessageReceived += (sender, args) =>
{
Log.Information($"{args.Data.Length} byte long message received from {args.Client.IpPort}");
};
client.Events.MessageReceived += Events_MessageReceived;
client.Events.ServerConnected += Events_ServerConnected;
client.Events.ServerDisconnected += Events_ServerDisconnected;
client.Events.ExceptionEncountered += Events_ExceptionEncountered;
 
try
{
@@ -1573,7 +1576,9 @@
{
try
{
var completeSnapshot = await _snapshotDatabase.GenerateTransferSnapshotAsync((string)rows[i].Cells["HashColumn"].Value, cancellationToken);
var completeSnapshot =
await _snapshotDatabase.GenerateTransferSnapshotAsync(
(string)rows[i].Cells["HashColumn"].Value, cancellationToken);
 
var jsonSnapshot = JsonConvert.SerializeObject(completeSnapshot);
 
@@ -1587,13 +1592,42 @@
}
}
}
catch (SocketException exception)
{
Log.Error(exception, "Client threw exception.");
}
finally
{
client.Events.MessageReceived -= Events_MessageReceived;
client.Events.ServerConnected -= Events_ServerConnected;
client.Events.ServerDisconnected -= Events_ServerDisconnected;
client.Events.ExceptionEncountered -= Events_ExceptionEncountered;
 
client.Dispose();
}
 
}
 
private void Events_ExceptionEncountered(object sender, ExceptionEventArgs e)
{
Log.Error(e.Exception, $"Client threw exception.");
}
 
private void Events_ServerDisconnected(object sender, DisconnectionEventArgs e)
{
Log.Information($"{e.Client?.IpPort} connected to server due to: {e.Reason}.");
}
 
private void Events_MessageReceived(object sender, MessageReceivedEventArgs e)
{
Log.Information($"{e.Data?.Length} byte long message received from {e.Client?.IpPort}");
}
 
private void Events_ServerConnected(object sender, WatsonTcp.ConnectionEventArgs e)
{
Log.Information($"{e.Client?.IpPort} connected to server.");
}
 
private async Task RevertFile(IReadOnlyList<DataGridViewRow> rows, IProgress<DataGridViewRowProgress> progress,
CancellationToken cancellationToken)
{