Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/WebSocket.Rx.Tests/ClientConnectedTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public void Constructor_ShouldSetName()

// Act
var connected =
new ClientConnected(new Metadata(id, IPAddress.Any, 0), new Connected(ConnectReason.Initial));
new ClientConnected(new Metadata(id, IPAddress.Any, 0), new Connected(ConnectReason.Initialized));

// Assert
Assert.Equal(id, connected.Metadata.Id);
Expand All @@ -24,7 +24,7 @@ public void Constructor_ShouldSetName()
public void Equality_WithSameName_ShouldBeEqual()
{
// Arrange
var @event = new Connected(ConnectReason.Initial);
var @event = new Connected(ConnectReason.Initialized);
var metadata = new Metadata(Guid.Empty, IPAddress.Any, 0);
var connected1 = new ClientConnected(metadata, @event);
var connected2 = new ClientConnected(metadata, @event);
Expand All @@ -38,9 +38,9 @@ public void Equality_WithDifferentName_ShouldNotBeEqual()
{
// Arrange
var connected1 = new ClientConnected(new Metadata(Guid.Empty, IPAddress.Any, 0),
new Connected(ConnectReason.Initial));
new Connected(ConnectReason.Initialized));
var connected2 = new ClientConnected(new Metadata(Guid.Empty, IPAddress.Any, 1),
new Connected(ConnectReason.Initial));
new Connected(ConnectReason.Initialized));

// Act & Assert
Assert.NotEqual(connected1, connected2);
Expand Down
2 changes: 1 addition & 1 deletion src/WebSocket.Rx.Tests/ConnectedTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class ConnectedTests
public void Equality_WithSameValues_ShouldBeEqual()
{
// Arrange
const ConnectReason @enum = ConnectReason.Initial;
const ConnectReason @enum = ConnectReason.Initialized;
var connected1 = new Connected(@enum);
var connected2 = new Connected(@enum);

Expand Down
6 changes: 3 additions & 3 deletions src/WebSocket.Rx.Tests/DisconnectedTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public void Records_WithSameValues_AreEqual()
[Fact]
public void WithExpression_CopiesValues()
{
var original = new Disconnected(DisconnectReason.Shutdown);
var original = new Disconnected(DisconnectReason.ClientInitiated);
original.CancelClosing();
original.CancelReconnection();

Expand All @@ -170,8 +170,8 @@ public void WithExpression_CopiesValues()
[Fact]
public void Flags_DoAffect_RecordEquality()
{
var a = new Disconnected(DisconnectReason.Shutdown);
var b = new Disconnected(DisconnectReason.Shutdown);
var a = new Disconnected(DisconnectReason.ClientInitiated);
var b = new Disconnected(DisconnectReason.ClientInitiated);

a.CancelClosing();
a.CancelReconnection();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public async Task Stop_WhenRunning_ShouldDisconnect()
var disconnected = new TaskCompletionSource<bool>();
var disconnectedTask = disconnected.Task;
Client.DisconnectionHappened
.Where(x => x.Reason is DisconnectReason.Shutdown)
.Where(x => x.Reason is DisconnectReason.ClientInitiated)
.Take(1)
.Subscribe(x => disconnected.SetResult(true));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public async Task Reconnect_WhenStarted_ShouldReconnect()

var reconnected = false;
Client.ConnectionHappened
.Where(c => c.Reason == ConnectReason.Reconnect)
.Where(c => c.Reason == ConnectReason.Reconnected)
.Subscribe(_ => reconnected = true);

// Act
Expand Down Expand Up @@ -63,7 +63,7 @@ public async Task ReconnectOrFail_WhenStarted_ShouldReconnect()

var reconnected = false;
Client.ConnectionHappened
.Where(c => c.Reason == ConnectReason.Reconnect)
.Where(c => c.Reason == ConnectReason.Reconnected)
.Subscribe(_ => reconnected = true);

// Act
Expand All @@ -84,7 +84,7 @@ public async Task AutoReconnect_OnConnectionLost_ShouldReconnect()

var reconnected = false;
Client.ConnectionHappened
.Where(c => c.Reason == ConnectReason.Reconnect)
.Where(c => c.Reason == ConnectReason.Reconnected)
.Subscribe(_ => reconnected = true);

await Client.StartOrFailAsync(TestContext.Current.CancellationToken);
Expand All @@ -107,7 +107,7 @@ public async Task AutoReconnect_WhenDisabled_ShouldNotReconnect()

var reconnectCount = 0;
Client.ConnectionHappened
.Where(c => c.Reason == ConnectReason.Reconnect)
.Where(c => c.Reason == ConnectReason.Reconnected)
.Subscribe(_ => reconnectCount++);

await Client.StartOrFailAsync(TestContext.Current.CancellationToken);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public async Task InactivityTimeout_OnConnectionLost_ShouldReconnectQuickly()
var reconnected = new TaskCompletionSource<bool>();
var reconnectTask = reconnected.Task;
Client.ConnectionHappened
.Where(c => c.Reason == ConnectReason.Reconnect)
.Where(c => c.Reason == ConnectReason.Reconnected)
.Take(1)
.Subscribe(_ => reconnected.TrySetResult(true));

Expand Down
4 changes: 2 additions & 2 deletions src/WebSocket.Rx/ConnectReason.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ namespace WebSocket.Rx;
public enum ConnectReason
{
Undefined = 0,
Initial = 1,
Reconnect = 2
Initialized = 1,
Reconnected = 2
}
10 changes: 5 additions & 5 deletions src/WebSocket.Rx/DisconnectReason.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ namespace WebSocket.Rx;
public enum DisconnectReason
{
Undefined = 0,
ConnectionLost = 1,
Timeout = 2,
ClientInitiated = 4,
ServerInitiated = 5,
Shutdown = 6
ClientInitiated = 1,
ServerInitiated = 2,
TimedOut = 3,
Dropped = 4,
Closed = 5
}
2 changes: 1 addition & 1 deletion src/WebSocket.Rx/ErrorSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ public enum ErrorSource
Send,
SendLoop,
ReceiveLoop,
Dispose,
Dispose
}
20 changes: 11 additions & 9 deletions src/WebSocket.Rx/ReactiveWebSocketClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,12 @@ public async Task StartOrFailAsync(CancellationToken cancellationToken = default
return;
}

await ConnectInternalAsync(ConnectReason.Initial, true, cancellationToken);
await ConnectInternalAsync(ConnectReason.Initialized, true, cancellationToken);
}
}

public async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription, CancellationToken cancellationToken = default)
public async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription,
CancellationToken cancellationToken = default)
{
try
{
Expand All @@ -100,7 +101,8 @@ public async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDesc
}
}

public async Task<bool> StopOrFailAsync(WebSocketCloseStatus status, string statusDescription, CancellationToken cancellationToken = default)
public async Task<bool> StopOrFailAsync(WebSocketCloseStatus status, string statusDescription,
CancellationToken cancellationToken = default)
{
using (await ConnectionLock.LockAsync(cancellationToken).ConfigureAwait(false))
{
Expand Down Expand Up @@ -128,7 +130,7 @@ public async Task<bool> StopOrFailAsync(WebSocketCloseStatus status, string stat
}
}

DisconnectionHappenedSource.OnNext(new Disconnected(DisconnectReason.Shutdown));
DisconnectionHappenedSource.OnNext(new Disconnected(DisconnectReason.ClientInitiated));

await CleanupAsync();

Expand Down Expand Up @@ -222,7 +224,7 @@ await Task.WhenAll(
ReceiveLoopTask ?? Task.CompletedTask
);

await ConnectInternalAsync(ConnectReason.Reconnect, throwOnError, cancellationToken);
await ConnectInternalAsync(ConnectReason.Reconnected, throwOnError, cancellationToken);
}
catch (Exception ex)
{
Expand Down Expand Up @@ -417,15 +419,15 @@ await NativeClient
var reason = ex.NativeErrorCode switch
{
// KeepAlive
10060 or 110 => DisconnectReason.Timeout,
10060 or 110 => DisconnectReason.TimedOut,

// Connection lost
10054 or 104 => DisconnectReason.ConnectionLost,
10054 or 104 => DisconnectReason.Dropped,

// Aborted/Cancelled
10053 or 995 => DisconnectReason.ClientInitiated,

_ => DisconnectReason.ConnectionLost
_ => DisconnectReason.Undefined
};

var @event = new Disconnected(reason, Exception: ex);
Expand All @@ -439,7 +441,7 @@ await NativeClient

if (!IsDisposed && IsReconnectionEnabled)
{
var @event = new Disconnected(DisconnectReason.ConnectionLost);
var @event = new Disconnected(DisconnectReason.Closed);
DisconnectionHappenedSource.OnNext(@event);
if (@event.IsReconnectionCanceled) return;
_ = ScheduleReconnectAsync().ConfigureAwait(false);
Expand Down
16 changes: 9 additions & 7 deletions src/WebSocket.Rx/ReactiveWebSocketServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ public async Task StartAsync(CancellationToken cancellationToken = default)
_serverLoopTask = Task.Run(() => ServerLoopAsync(_mainCts.Token), CancellationToken.None);
}

public async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription, CancellationToken cancellationToken = default)
public async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription,
CancellationToken cancellationToken = default)
{
Dictionary<Guid, Client> clientsToStop;
using (await _serverLock.LockAsync(cancellationToken).ConfigureAwait(false))
Expand Down Expand Up @@ -233,7 +234,7 @@ private async Task HandleWebSocketAsync(HttpListenerContext context, Metadata me

lock (_clientConnectedSource)
{
_clientConnectedSource.OnNext(new ClientConnected(metadata, new Connected(ConnectReason.Initial)));
_clientConnectedSource.OnNext(new ClientConnected(metadata, new Connected(ConnectReason.Initialized)));
}
}
catch (Exception)
Expand Down Expand Up @@ -675,15 +676,15 @@ await NativeServerSocket
var reason = ex.NativeErrorCode switch
{
// KeepAlive
10060 or 110 => DisconnectReason.Timeout,
10060 or 110 => DisconnectReason.Undefined,

// Connection lost
10054 or 104 => DisconnectReason.ConnectionLost,
10054 or 104 => DisconnectReason.Undefined,

// Aborted/Cancelled
10053 or 995 => DisconnectReason.ClientInitiated,

_ => DisconnectReason.ConnectionLost
_ => DisconnectReason.Undefined
};
DisconnectionHappenedSource.OnNext(new Disconnected(reason, Exception: ex));
}
Expand All @@ -701,7 +702,8 @@ await NativeServerSocket
}
}

public new async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription, CancellationToken cancellationToken = default)
public new async Task<bool> StopAsync(WebSocketCloseStatus status, string statusDescription,
CancellationToken cancellationToken = default)
{
if (!IsStarted)
{
Expand All @@ -722,7 +724,7 @@ await NativeServerSocket
}
}

DisconnectionHappenedSource.OnNext(new Disconnected(DisconnectReason.Shutdown));
DisconnectionHappenedSource.OnNext(new Disconnected(DisconnectReason.ServerInitiated));

IsStarted = false;
IsRunning = false;
Expand Down
Loading