From 8ce3e74e8112a94773df22827849bf274fc88198 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Sun, 24 Feb 2013 16:53:54 -0500 Subject: More DI --- MediaBrowser.Common/Net/WebSocketConnection.cs | 33 ++++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'MediaBrowser.Common/Net/WebSocketConnection.cs') diff --git a/MediaBrowser.Common/Net/WebSocketConnection.cs b/MediaBrowser.Common/Net/WebSocketConnection.cs index ab691c823..6b22ef78e 100644 --- a/MediaBrowser.Common/Net/WebSocketConnection.cs +++ b/MediaBrowser.Common/Net/WebSocketConnection.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Common.Serialization; +using System.IO; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Serialization; using System; -using System.Net; using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; @@ -38,14 +38,21 @@ namespace MediaBrowser.Common.Net /// private readonly ILogger _logger; + /// + /// The _json serializer + /// + private readonly IJsonSerializer _jsonSerializer; + /// /// Initializes a new instance of the class. /// /// The socket. /// The remote end point. /// The receive action. + /// The json serializer. + /// The logger. /// socket - public WebSocketConnection(IWebSocket socket, string remoteEndPoint, Action receiveAction, ILogger logger) + public WebSocketConnection(IWebSocket socket, string remoteEndPoint, Action receiveAction, IJsonSerializer jsonSerializer, ILogger logger) { if (socket == null) { @@ -59,11 +66,16 @@ namespace MediaBrowser.Common.Net { throw new ArgumentNullException("receiveAction"); } + if (jsonSerializer == null) + { + throw new ArgumentNullException("jsonSerializer"); + } if (logger == null) { throw new ArgumentNullException("logger"); } + _jsonSerializer = jsonSerializer; _socket = socket; _socket.OnReceiveDelegate = info => OnReceive(info, receiveAction); RemoteEndPoint = remoteEndPoint; @@ -73,12 +85,19 @@ namespace MediaBrowser.Common.Net /// /// Called when [receive]. /// - /// The info. + /// The bytes. /// The callback. - private void OnReceive(WebSocketMessageInfo info, Action callback) + private void OnReceive(byte[] bytes, Action callback) { try { + WebSocketMessageInfo info; + + using (var memoryStream = new MemoryStream(bytes)) + { + info = _jsonSerializer.DeserializeFromStream(memoryStream); + } + info.Connection = this; callback(info); @@ -103,8 +122,8 @@ namespace MediaBrowser.Common.Net { throw new ArgumentNullException("message"); } - - var bytes = JsonSerializer.SerializeToBytes(message); + + var bytes = _jsonSerializer.SerializeToBytes(message); return SendAsync(bytes, cancellationToken); } -- cgit v1.2.3