/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/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) |
{ |