From 12c6a4b9178000c2887f7f2cf0af991c4b7d71a3 Mon Sep 17 00:00:00 2001 From: moozzyk Date: Fri, 17 Feb 2017 10:58:58 -0800 Subject: [PATCH] Adding IConnection interface --- .../HubConnection.cs | 14 +++++++++++-- .../Connection.cs | 2 +- .../IConnection.cs | 21 +++++++++++++++++++ .../WebSocketsTransport.cs | 2 +- .../HubConnectionTests.cs | 2 +- 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/Microsoft.AspNetCore.Sockets.Client/IConnection.cs diff --git a/src/Microsoft.AspNetCore.SignalR.Client/HubConnection.cs b/src/Microsoft.AspNetCore.SignalR.Client/HubConnection.cs index e925f66f39..63dd2b2260 100644 --- a/src/Microsoft.AspNetCore.SignalR.Client/HubConnection.cs +++ b/src/Microsoft.AspNetCore.SignalR.Client/HubConnection.cs @@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.SignalR.Client public class HubConnection { private readonly ILogger _logger; - private readonly Connection _connection; + private readonly IConnection _connection; private readonly IInvocationAdapter _adapter; private readonly HubBinder _binder; @@ -46,6 +46,10 @@ namespace Microsoft.AspNetCore.SignalR.Client } public HubConnection(Uri url, IInvocationAdapter adapter, ILoggerFactory loggerFactory) + : this(new Connection(url, loggerFactory), adapter, loggerFactory) + { } + + public HubConnection(IConnection connection, IInvocationAdapter adapter, ILoggerFactory loggerFactory) { // TODO: loggerFactory shouldn't be required if (loggerFactory == null) @@ -53,8 +57,14 @@ namespace Microsoft.AspNetCore.SignalR.Client throw new ArgumentNullException(nameof(loggerFactory)); } + if (connection == null) + { + throw new ArgumentNullException(nameof(connection)); + } + + _connection = connection; + _binder = new HubBinder(this); - _connection = new Connection(url, loggerFactory); _adapter = adapter; _logger = loggerFactory.CreateLogger(); diff --git a/src/Microsoft.AspNetCore.Sockets.Client/Connection.cs b/src/Microsoft.AspNetCore.Sockets.Client/Connection.cs index 13fb3e9e81..1a557275d0 100644 --- a/src/Microsoft.AspNetCore.Sockets.Client/Connection.cs +++ b/src/Microsoft.AspNetCore.Sockets.Client/Connection.cs @@ -12,7 +12,7 @@ using Microsoft.Extensions.Logging; namespace Microsoft.AspNetCore.Sockets.Client { - public class Connection + public class Connection: IConnection { private readonly ILoggerFactory _loggerFactory; private readonly ILogger _logger; diff --git a/src/Microsoft.AspNetCore.Sockets.Client/IConnection.cs b/src/Microsoft.AspNetCore.Sockets.Client/IConnection.cs new file mode 100644 index 0000000000..524e3de548 --- /dev/null +++ b/src/Microsoft.AspNetCore.Sockets.Client/IConnection.cs @@ -0,0 +1,21 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.AspNetCore.Sockets.Client +{ + public interface IConnection + { + Task StartAsync(ITransport transport, HttpClient httpClient); + Task SendAsync(byte[] data, MessageType type, CancellationToken cancellationToken); + Task DisposeAsync(); + + event Action Connected; + event Action Received; + event Action Closed; + } +} diff --git a/src/Microsoft.AspNetCore.Sockets.Client/WebSocketsTransport.cs b/src/Microsoft.AspNetCore.Sockets.Client/WebSocketsTransport.cs index c01b138d8a..2af16767b3 100644 --- a/src/Microsoft.AspNetCore.Sockets.Client/WebSocketsTransport.cs +++ b/src/Microsoft.AspNetCore.Sockets.Client/WebSocketsTransport.cs @@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Sockets.Client { throw new ArgumentNullException(nameof(application)); } - + _application = application; await Connect(url); diff --git a/test/Microsoft.AspNetCore.Sockets.Client.Tests/HubConnectionTests.cs b/test/Microsoft.AspNetCore.Sockets.Client.Tests/HubConnectionTests.cs index 16dace1f5d..09fe12c0e9 100644 --- a/test/Microsoft.AspNetCore.Sockets.Client.Tests/HubConnectionTests.cs +++ b/test/Microsoft.AspNetCore.Sockets.Client.Tests/HubConnectionTests.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests public void CannotCreateHubConnectionWithNullUrl() { var exception = Assert.Throws( - () => new HubConnection(null, Mock.Of(), Mock.Of())); + () => new HubConnection((Uri)null, Mock.Of(), Mock.Of())); Assert.Equal("url", exception.ParamName); }