From 93405fcab7171d70071322e6800c50e355b5ae55 Mon Sep 17 00:00:00 2001 From: xljiulang <366193849@qq.com> Date: Sun, 13 Nov 2016 17:47:18 +0800 Subject: [PATCH] rename --- NetworkSocket/ByteBits.cs | 1 - NetworkSocket/Core/ApiParameter.cs | 1 - .../Internal/DefaultDynamicJsonSerializer.cs | 23 ++-- .../Core/Internal/DefaultSerializer.cs | 4 - .../Exceptions/ApiExecuteException.cs | 1 - .../Exceptions/ApiNotExistException.cs | 1 - NetworkSocket/Exceptions/RemoteException.cs | 1 - NetworkSocket/Exceptions/ResolveException.cs | 1 - NetworkSocket/Fast/FastApiService.cs | 7 - NetworkSocket/Fast/FastMiddleware.cs | 4 +- NetworkSocket/Fast/FastPacket.cs | 28 ++-- NetworkSocket/Fast/FastTcpClient.cs | 12 +- NetworkSocket/Flex/FlexPolicyMiddleware.cs | 6 +- NetworkSocket/Http/HttpController.cs | 6 - NetworkSocket/Http/HttpMiddlewareBase.cs | 2 +- .../Http/Internal/DefaultModelBinder.cs | 1 - .../Http/Internal/HttpRequestParser.cs | 66 +++++----- NetworkSocket/Http/Result/JsonResult.cs | 8 +- NetworkSocket/Http/Result/ResultfulResult.cs | 2 +- NetworkSocket/IContenxt.cs | 59 ++++----- ...treamReader.cs => ISessionStreamReader.cs} | 16 +-- NetworkSocket/Internal/Context.cs | 11 +- NetworkSocket/Internal/IocpTcpSession.cs | 8 +- NetworkSocket/Internal/LastMiddlerware.cs | 2 +- NetworkSocket/Internal/SslTcpSession.cs | 12 +- NetworkSocket/Internal/TcpSessionBase.cs | 18 +-- NetworkSocket/NetworkSocket.Net45.csproj | 5 +- NetworkSocket/Reflection/Method.cs | 3 +- NetworkSocket/Reflection/Property.cs | 1 - .../SilverlightPolicyMiddleware.cs | 6 +- NetworkSocket/Streams/SessionStream.cs | 23 ++++ ...StreamReader.cs => SessionStreamReader.cs} | 12 +- NetworkSocket/TcpClientBase.cs | 6 +- NetworkSocket/TcpListener.cs | 2 +- NetworkSocket/Validation/Model.cs | 124 ++++++++---------- NetworkSocket/WebSocket/FrameRequest.cs | 24 ++-- NetworkSocket/WebSocket/HandshakeRequest.cs | 12 +- .../WebSocket/JsonWebSocketApiService.cs | 6 - NetworkSocket/WebSocket/WebSocketClient.cs | 20 +-- .../WebSocket/WebSocketMiddlewareBase.cs | 6 +- ...4\346\226\260\350\257\264\346\230\216.txt" | 2 +- example/Models/LoginResult.cs | 1 - example/Models/UserInfo.cs | 1 - 43 files changed, 261 insertions(+), 294 deletions(-) rename NetworkSocket/{IStreamReader.cs => ISessionStreamReader.cs} (90%) create mode 100644 NetworkSocket/Streams/SessionStream.cs rename NetworkSocket/Streams/{InputStreamReader.cs => SessionStreamReader.cs} (95%) diff --git a/NetworkSocket/ByteBits.cs b/NetworkSocket/ByteBits.cs index 39c925a..8fa7bfe 100644 --- a/NetworkSocket/ByteBits.cs +++ b/NetworkSocket/ByteBits.cs @@ -10,7 +10,6 @@ namespace NetworkSocket /// 表示byte的位集合 /// 位索引为高位到低位顺序 /// - [Serializable] [DebuggerDisplay("{value}")] [DebuggerTypeProxy(typeof(DebugView))] public struct ByteBits : IComparable diff --git a/NetworkSocket/Core/ApiParameter.cs b/NetworkSocket/Core/ApiParameter.cs index b727c6c..cc79e65 100644 --- a/NetworkSocket/Core/ApiParameter.cs +++ b/NetworkSocket/Core/ApiParameter.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading; using System.Threading.Tasks; diff --git a/NetworkSocket/Core/Internal/DefaultDynamicJsonSerializer.cs b/NetworkSocket/Core/Internal/DefaultDynamicJsonSerializer.cs index 62857ff..ee00f99 100644 --- a/NetworkSocket/Core/Internal/DefaultDynamicJsonSerializer.cs +++ b/NetworkSocket/Core/Internal/DefaultDynamicJsonSerializer.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Dynamic; -using System.IO; +using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -33,10 +33,10 @@ public string Serialize(object model) /// 序列化为Json /// /// 实体 - /// 时期时间格式化 + /// 时期时间格式 /// /// - public string Serialize(object model, Func datetimeFomat) + public string Serialize(object model, string datetimeFomat) { try { @@ -118,20 +118,15 @@ private static class JSON /// 序列化得到Json /// /// 模型 - /// 时期时间格式化 + /// 时期时间格式 /// - public static string Parse(object model, Func datetimeFomat) + public static string Parse(object model, string datetimeFomat) { if (model == null) { return null; } - if (datetimeFomat == null) - { - datetimeFomat = (time) => time.ToString(); - } - var serializer = new JavaScriptSerializer(); var dateTimeConverter = new DateTimeConverter(datetimeFomat); serializer.MaxJsonLength = int.MaxValue; @@ -154,13 +149,13 @@ private class DateTimeConverter : JavaScriptConverter /// /// 时期时间格式化 /// - private readonly Func datetimeFomat; + private readonly string datetimeFomat; /// /// 时间转换 /// - /// 时期时间格式化 - public DateTimeConverter(Func datetimeFomat) + /// 时期时间格式 + public DateTimeConverter(string datetimeFomat) { this.datetimeFomat = datetimeFomat; } @@ -202,7 +197,7 @@ public override IDictionary Serialize(object obj, JavaScriptSeri } this.isUsed = true; - var dateTimeString = this.datetimeFomat(dateTime.Value); + var dateTimeString = dateTime.Value.ToString(this.datetimeFomat, DateTimeFormatInfo.InvariantInfo); return new UriEscapeValue(dateTimeString); } diff --git a/NetworkSocket/Core/Internal/DefaultSerializer.cs b/NetworkSocket/Core/Internal/DefaultSerializer.cs index aedb5ac..edfcca7 100644 --- a/NetworkSocket/Core/Internal/DefaultSerializer.cs +++ b/NetworkSocket/Core/Internal/DefaultSerializer.cs @@ -1,10 +1,6 @@ using NetworkSocket.Exceptions; using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; using System.Text; -using System.Web.Script.Serialization; namespace NetworkSocket.Core { diff --git a/NetworkSocket/Exceptions/ApiExecuteException.cs b/NetworkSocket/Exceptions/ApiExecuteException.cs index 5029c53..1f48af5 100644 --- a/NetworkSocket/Exceptions/ApiExecuteException.cs +++ b/NetworkSocket/Exceptions/ApiExecuteException.cs @@ -8,7 +8,6 @@ namespace NetworkSocket.Exceptions /// /// 表示Api执行异常 /// - [Serializable] public class ApiExecuteException : Exception { /// diff --git a/NetworkSocket/Exceptions/ApiNotExistException.cs b/NetworkSocket/Exceptions/ApiNotExistException.cs index 51dc5d9..38564c2 100644 --- a/NetworkSocket/Exceptions/ApiNotExistException.cs +++ b/NetworkSocket/Exceptions/ApiNotExistException.cs @@ -9,7 +9,6 @@ namespace NetworkSocket.Exceptions /// /// 表示Api不存在引发的异常 /// - [Serializable] [DebuggerDisplay("Message = {Message}")] public class ApiNotExistException : Exception { diff --git a/NetworkSocket/Exceptions/RemoteException.cs b/NetworkSocket/Exceptions/RemoteException.cs index 5fca593..21b0b46 100644 --- a/NetworkSocket/Exceptions/RemoteException.cs +++ b/NetworkSocket/Exceptions/RemoteException.cs @@ -9,7 +9,6 @@ namespace NetworkSocket.Exceptions /// /// 表示远程端Api行为异常 /// - [Serializable] [DebuggerDisplay("Message = {Message}")] public class RemoteException : Exception { diff --git a/NetworkSocket/Exceptions/ResolveException.cs b/NetworkSocket/Exceptions/ResolveException.cs index c255f7c..34a1b72 100644 --- a/NetworkSocket/Exceptions/ResolveException.cs +++ b/NetworkSocket/Exceptions/ResolveException.cs @@ -9,7 +9,6 @@ namespace NetworkSocket.Exceptions /// /// 表示依赖反转异常 /// - [Serializable] [DebuggerDisplay("Message = {Message}")] public class ResolveException : Exception { diff --git a/NetworkSocket/Fast/FastApiService.cs b/NetworkSocket/Fast/FastApiService.cs index 6b536d3..994ad51 100644 --- a/NetworkSocket/Fast/FastApiService.cs +++ b/NetworkSocket/Fast/FastApiService.cs @@ -1,15 +1,8 @@ using NetworkSocket.Core; using NetworkSocket.Exceptions; -using NetworkSocket.Tasks; -using NetworkSocket.Util; using System; using System.Collections.Generic; using System.Linq; -using System.Net.Sockets; -using System.Reflection; -using System.Runtime.Remoting.Messaging; -using System.Text; -using System.Threading; using System.Threading.Tasks; namespace NetworkSocket.Fast diff --git a/NetworkSocket/Fast/FastMiddleware.cs b/NetworkSocket/Fast/FastMiddleware.cs index fe86895..cd9d6f0 100644 --- a/NetworkSocket/Fast/FastMiddleware.cs +++ b/NetworkSocket/Fast/FastMiddleware.cs @@ -128,7 +128,7 @@ Task IMiddleware.Invoke(IContenxt context) private Task OnFastRequestAsync(IContenxt context) { var fastPacket = default(FastPacket); - if (FastPacket.Parse(context.InputStream, out fastPacket) == false) + if (FastPacket.Parse(context.StreamReader, out fastPacket) == false) { return this.Next.Invoke(context); } @@ -168,7 +168,7 @@ private IList GenerateFastPackets(IContenxt context, FastPacket fast while (true) { var packet = default(FastPacket); - if (FastPacket.Parse(context.InputStream, out packet) == false) + if (FastPacket.Parse(context.StreamReader, out packet) == false) { return list; } diff --git a/NetworkSocket/Fast/FastPacket.cs b/NetworkSocket/Fast/FastPacket.cs index a1478a5..ac63d79 100644 --- a/NetworkSocket/Fast/FastPacket.cs +++ b/NetworkSocket/Fast/FastPacket.cs @@ -168,26 +168,26 @@ public override string ToString() /// 解析一个数据包 /// 不足一个封包时返回null /// - /// 接收到的历史数据 + /// 数据读取器 /// 数据包 /// - public static bool Parse(IStreamReader stream, out FastPacket packet) + public static bool Parse(ISessionStreamReader streamReader, out FastPacket packet) { - if (stream.Length < 1 || stream[0] != FastPacket.Mark) + if (streamReader.Length < 1 || streamReader[0] != FastPacket.Mark) { packet = null; return false; } - if (stream.Length < 5) + if (streamReader.Length < 5) { packet = null; return true; } - stream.Position = 1; + streamReader.Position = 1; const int packetMinSize = 16; - var totalBytes = stream.ReadInt32(); + var totalBytes = streamReader.ReadInt32(); if (totalBytes < packetMinSize) { @@ -196,14 +196,14 @@ public static bool Parse(IStreamReader stream, out FastPacket packet) } // 数据包未接收完整 - if (stream.Length < totalBytes) + if (streamReader.Length < totalBytes) { packet = null; return true; } // api名称数据长度 - var apiNameLength = stream.ReadByte(); + var apiNameLength = streamReader.ReadByte(); if (totalBytes < apiNameLength + packetMinSize) { packet = null; @@ -211,18 +211,18 @@ public static bool Parse(IStreamReader stream, out FastPacket packet) } // api名称数据 - var apiNameBytes = stream.ReadArray(apiNameLength); + var apiNameBytes = streamReader.ReadArray(apiNameLength); // 标识符 - var id = stream.ReadInt64(); + var id = streamReader.ReadInt64(); // 是否为客户端封包 - var isFromClient = stream.ReadBoolean(); + var isFromClient = streamReader.ReadBoolean(); // 是否异常 - var isException = stream.ReadBoolean(); + var isException = streamReader.ReadBoolean(); // 实体数据 - var body = stream.ReadArray(totalBytes - stream.Position); + var body = streamReader.ReadArray(totalBytes - streamReader.Position); // 清空本条数据 - stream.Clear(totalBytes); + streamReader.Clear(totalBytes); var apiName = Encoding.UTF8.GetString(apiNameBytes); packet = new FastPacket(apiName, id, isFromClient) diff --git a/NetworkSocket/Fast/FastTcpClient.cs b/NetworkSocket/Fast/FastTcpClient.cs index f05d483..90e730d 100644 --- a/NetworkSocket/Fast/FastTcpClient.cs +++ b/NetworkSocket/Fast/FastTcpClient.cs @@ -93,11 +93,11 @@ private void Init() /// /// 当接收到远程端的数据时,将触发此方法 /// - /// 接收到的历史数据 + /// 数据读取器 /// - protected sealed override Task OnReceiveAsync(IStreamReader inputStream) + protected sealed override Task OnReceiveAsync(ISessionStreamReader streamReader) { - var packages = this.GenerateFastPackets(inputStream); + var packages = this.GenerateFastPackets(streamReader); foreach (var package in packages) { this.ProcessPacketAsync(package); @@ -108,15 +108,15 @@ protected sealed override Task OnReceiveAsync(IStreamReader inputStream) /// /// 生成数据包 /// - /// 数据流 + /// 数据流 /// - private IList GenerateFastPackets(IStreamReader inputStream) + private IList GenerateFastPackets(ISessionStreamReader streamReader) { var list = new List(); while (true) { var packet = default(FastPacket); - if (FastPacket.Parse(inputStream, out packet) == false) + if (FastPacket.Parse(streamReader, out packet) == false) { return list; } diff --git a/NetworkSocket/Flex/FlexPolicyMiddleware.cs b/NetworkSocket/Flex/FlexPolicyMiddleware.cs index 69f09b0..2e3ea65 100644 --- a/NetworkSocket/Flex/FlexPolicyMiddleware.cs +++ b/NetworkSocket/Flex/FlexPolicyMiddleware.cs @@ -25,13 +25,13 @@ public class FlexPolicyMiddleware : IMiddleware /// async Task IMiddleware.Invoke(IContenxt context) { - if (context.Session.Protocol != Protocol.None || context.InputStream.Length != 23) + if (context.Session.Protocol != Protocol.None || context.StreamReader.Length != 23) { await this.Next.Invoke(context); } - context.InputStream.Position = 0; - var request = context.InputStream.ReadString(Encoding.ASCII); + context.StreamReader.Position = 0; + var request = context.StreamReader.ReadString(Encoding.ASCII); if (string.Equals(request, "\0", StringComparison.OrdinalIgnoreCase)) { this.SendPolicyXML(context); diff --git a/NetworkSocket/Http/HttpController.cs b/NetworkSocket/Http/HttpController.cs index 6b68533..710a153 100644 --- a/NetworkSocket/Http/HttpController.cs +++ b/NetworkSocket/Http/HttpController.cs @@ -1,17 +1,11 @@ using NetworkSocket.Core; using NetworkSocket.Exceptions; -using NetworkSocket.Tasks; using NetworkSocket.Util; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Net.Sockets; -using System.Reflection; -using System.Runtime.Remoting.Messaging; -using System.Text; using System.Threading.Tasks; -using System.Web; namespace NetworkSocket.Http { diff --git a/NetworkSocket/Http/HttpMiddlewareBase.cs b/NetworkSocket/Http/HttpMiddlewareBase.cs index edff9a0..eedf658 100644 --- a/NetworkSocket/Http/HttpMiddlewareBase.cs +++ b/NetworkSocket/Http/HttpMiddlewareBase.cs @@ -86,7 +86,7 @@ private Task ProcessParseResultAsync(IContenxt context, HttpParseResult result) return this.Next.Invoke(context); } - context.InputStream.Clear(result.PackageLength); + context.StreamReader.Clear(result.PackageLength); if (context.Session.Protocol == Protocol.None) { context.Session.SetProtocolWrapper(Protocol.Http, null); diff --git a/NetworkSocket/Http/Internal/DefaultModelBinder.cs b/NetworkSocket/Http/Internal/DefaultModelBinder.cs index aaf3821..c619423 100644 --- a/NetworkSocket/Http/Internal/DefaultModelBinder.cs +++ b/NetworkSocket/Http/Internal/DefaultModelBinder.cs @@ -7,7 +7,6 @@ using System.Linq; using System.Reflection; using System.Text; -using System.Web.Script.Serialization; namespace NetworkSocket.Http { diff --git a/NetworkSocket/Http/Internal/HttpRequestParser.cs b/NetworkSocket/Http/Internal/HttpRequestParser.cs index 04e4aba..b0b7715 100644 --- a/NetworkSocket/Http/Internal/HttpRequestParser.cs +++ b/NetworkSocket/Http/Internal/HttpRequestParser.cs @@ -45,15 +45,15 @@ public static HttpParseResult Parse(IContenxt context) { var headerLength = 0; var result = new HttpParseResult(); - context.InputStream.Position = 0; + context.StreamReader.Position = 0; - result.IsHttp = HttpRequestParser.IsHttp(context.InputStream, out headerLength); + result.IsHttp = HttpRequestParser.IsHttp(context.StreamReader, out headerLength); if (result.IsHttp == false || headerLength <= 0) { return result; } - var headerString = context.InputStream.ReadString(Encoding.ASCII, headerLength); + var headerString = context.StreamReader.ReadString(Encoding.ASCII, headerLength); const string pattern = @"^(?[^\s]+)\s(?[^\s]+)\sHTTP\/1\.1\r\n" + @"((?[^:\r\n]+):\s(?[^\r\n]*)\r\n)+" + @"\r\n"; @@ -69,7 +69,7 @@ public static HttpParseResult Parse(IContenxt context) var httpHeader = HttpHeader.Parse(match.Groups["field_name"].Captures, match.Groups["field_value"].Captures); var contentLength = httpHeader.TryGet("Content-Length"); - if (httpMethod == HttpMethod.POST && context.InputStream.Length - headerLength < contentLength) + if (httpMethod == HttpMethod.POST && context.StreamReader.Length - headerLength < contentLength) { return result;// 数据未完整 } @@ -102,9 +102,9 @@ public static HttpParseResult Parse(IContenxt context) break; default: - request.Body = context.InputStream.ReadArray(contentLength); - context.InputStream.Position = headerLength; - HttpRequestParser.GeneratePostFormAndFiles(request, context.InputStream); + request.Body = context.StreamReader.ReadArray(contentLength); + context.StreamReader.Position = headerLength; + HttpRequestParser.GeneratePostFormAndFiles(request, context.StreamReader); break; } @@ -118,13 +118,13 @@ public static HttpParseResult Parse(IContenxt context) /// /// 是否为http协议 /// - /// 收到的数据 + /// 数据读取器 /// 头数据长度,包括双换行 /// - private static bool IsHttp(IStreamReader stream, out int headerLength) + private static bool IsHttp(ISessionStreamReader streamReader, out int headerLength) { - var methodLength = HttpRequestParser.GetMthodLength(stream); - var methodName = stream.ReadString(Encoding.ASCII, methodLength); + var methodLength = HttpRequestParser.GetMthodLength(streamReader); + var methodName = streamReader.ReadString(Encoding.ASCII, methodLength); if (HttpRequestParser.MethodNames.Any(m => m.StartsWith(methodName, StringComparison.OrdinalIgnoreCase)) == false) { @@ -132,8 +132,8 @@ private static bool IsHttp(IStreamReader stream, out int headerLength) return false; } - stream.Position = 0; - var headerIndex = stream.IndexOf(HttpRequestParser.DoubleCrlf); + streamReader.Position = 0; + var headerIndex = streamReader.IndexOf(HttpRequestParser.DoubleCrlf); if (headerIndex < 0) { headerLength = 0; @@ -147,14 +147,14 @@ private static bool IsHttp(IStreamReader stream, out int headerLength) /// /// 获取当前的http方法长度 /// - /// 收到的数据 + /// 数据读取器 /// - private static int GetMthodLength(IStreamReader stream) + private static int GetMthodLength(ISessionStreamReader streamReader) { - var maxLength = Math.Min(stream.Length, HttpRequestParser.MedthodMaxLength + 1); + var maxLength = Math.Min(streamReader.Length, HttpRequestParser.MedthodMaxLength + 1); for (var i = 0; i < maxLength; i++) { - if (stream[i] == HttpRequestParser.Space) + if (streamReader[i] == HttpRequestParser.Space) { return i; } @@ -181,9 +181,9 @@ private static HttpMethod CastHttpMethod(string method) /// /// 生成Post得到的表单和文件 /// - /// - /// - private static void GeneratePostFormAndFiles(HttpRequest request, IStreamReader stream) + /// 请求 + /// 数据读取器 + private static void GeneratePostFormAndFiles(HttpRequest request, ISessionStreamReader streamReader) { var boundary = default(string); if (request.IsApplicationFormRequest() == true) @@ -194,7 +194,7 @@ private static void GeneratePostFormAndFiles(HttpRequest request, IStreamReader { if (request.Body.Length >= boundary.Length) { - HttpRequestParser.GenerateMultipartFormAndFiles(request, stream, boundary); + HttpRequestParser.GenerateMultipartFormAndFiles(request, streamReader, boundary); } } @@ -224,28 +224,28 @@ private static void GenerateApplicationForm(HttpRequest request) /// /// 生成表单和文件 /// - /// - /// + /// 请求 + /// 数据读取器 /// 边界 - private static void GenerateMultipartFormAndFiles(HttpRequest request, IStreamReader stream, string boundary) + private static void GenerateMultipartFormAndFiles(HttpRequest request, ISessionStreamReader streamReader, string boundary) { var boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary); - var maxPosition = stream.Length - Encoding.ASCII.GetBytes("--\r\n").Length; + var maxPosition = streamReader.Length - Encoding.ASCII.GetBytes("--\r\n").Length; var files = new List(); var form = new HttpNameValueCollection(); - stream.Position = stream.Position + boundaryBytes.Length; - while (stream.Position < maxPosition) + streamReader.Position = streamReader.Position + boundaryBytes.Length; + while (streamReader.Position < maxPosition) { - var headLength = stream.IndexOf(HttpRequestParser.DoubleCrlf) + HttpRequestParser.DoubleCrlf.Length; + var headLength = streamReader.IndexOf(HttpRequestParser.DoubleCrlf) + HttpRequestParser.DoubleCrlf.Length; if (headLength < HttpRequestParser.DoubleCrlf.Length) { break; } - var head = stream.ReadString(Encoding.UTF8, headLength); - var bodyLength = stream.IndexOf(boundaryBytes); + var head = streamReader.ReadString(Encoding.UTF8, headLength); + var bodyLength = streamReader.IndexOf(boundaryBytes); if (bodyLength < 0) { break; @@ -254,17 +254,17 @@ private static void GenerateMultipartFormAndFiles(HttpRequest request, IStreamRe var mHead = new MultipartHead(head); if (mHead.IsFile == true) { - var bytes = stream.ReadArray(bodyLength); + var bytes = streamReader.ReadArray(bodyLength); var file = new HttpFile(mHead, bytes); files.Add(file); } else { - var byes = stream.ReadArray(bodyLength); + var byes = streamReader.ReadArray(bodyLength); var value = HttpUtility.UrlDecode(byes, Encoding.UTF8); form.Add(mHead.Name, value); } - stream.Position = stream.Position + boundaryBytes.Length; + streamReader.Position = streamReader.Position + boundaryBytes.Length; } request.Form = form; diff --git a/NetworkSocket/Http/Result/JsonResult.cs b/NetworkSocket/Http/Result/JsonResult.cs index 6b76221..efd53bf 100644 --- a/NetworkSocket/Http/Result/JsonResult.cs +++ b/NetworkSocket/Http/Result/JsonResult.cs @@ -1,9 +1,5 @@ using NetworkSocket.Core; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Web.Script.Serialization; namespace NetworkSocket.Http { @@ -30,9 +26,9 @@ public JsonResult(object data) /// 序列化成json文本 /// /// 内容 - /// 时期时间格式化 + /// 时期时间格式 /// - protected virtual string SerializeJson(object data, Func datetimeFomat) + protected virtual string SerializeJson(object data, string datetimeFomat) { return new DefaultDynamicJsonSerializer().Serialize(this.Data, datetimeFomat); } diff --git a/NetworkSocket/Http/Result/ResultfulResult.cs b/NetworkSocket/Http/Result/ResultfulResult.cs index 5536d3f..d09da86 100644 --- a/NetworkSocket/Http/Result/ResultfulResult.cs +++ b/NetworkSocket/Http/Result/ResultfulResult.cs @@ -29,7 +29,7 @@ public RestfulResult(object data) /// protected virtual string SerializeXml(object data) { - throw new NotImplementedException("SerializeXml"); + throw new NotImplementedException("不支持application/xml的返回类型"); } /// diff --git a/NetworkSocket/IContenxt.cs b/NetworkSocket/IContenxt.cs index 21e9007..300f731 100644 --- a/NetworkSocket/IContenxt.cs +++ b/NetworkSocket/IContenxt.cs @@ -1,30 +1,29 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Sockets; -using System.Text; - -namespace NetworkSocket -{ - /// - /// 定义会话请求的上下文 - /// - public interface IContenxt - { - /// - /// 获取当前会话对象 - /// - ISession Session { get; } - - /// - /// 获取当前会话收到的数据 - /// 非线程安全类型 - /// - IStreamReader InputStream { get; } - - /// - /// 获取所有会话对象 - /// - ISessionManager AllSessions { get; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; + +namespace NetworkSocket +{ + /// + /// 定义会话请求的上下文 + /// + public interface IContenxt + { + /// + /// 获取当前会话对象 + /// + ISession Session { get; } + + /// + /// 获取当前会话收到的数据读取器 + /// + ISessionStreamReader StreamReader { get; } + + /// + /// 获取所有会话对象 + /// + ISessionManager AllSessions { get; } + } +} diff --git a/NetworkSocket/IStreamReader.cs b/NetworkSocket/ISessionStreamReader.cs similarity index 90% rename from NetworkSocket/IStreamReader.cs rename to NetworkSocket/ISessionStreamReader.cs index 897a87a..0c7bfbe 100644 --- a/NetworkSocket/IStreamReader.cs +++ b/NetworkSocket/ISessionStreamReader.cs @@ -8,7 +8,7 @@ namespace NetworkSocket /// /// 定义会话收到的数据流读取接口 /// - public interface IStreamReader + public interface ISessionStreamReader { /// /// 获取同步锁对象 @@ -46,7 +46,7 @@ public interface IStreamReader /// /// 从流中读取2个字节,并将流内的位置向前推进2个字节, - /// 返回其Int16表示类型 + /// 返回其Int16的Endians.Big表示类型 /// /// short ReadInt16(); @@ -61,7 +61,7 @@ public interface IStreamReader /// /// 从流中读取2个字节,并将流内的位置向前推进2个字节, - /// 返回其UInt16表示类型 + /// 返回其UInt16的Endians.Big表示类型 /// /// uint ReadUInt16(); @@ -76,7 +76,7 @@ public interface IStreamReader /// /// 从流中读取4个字节,并将流内的位置向前推进4个字节, - /// 返回其Int32表示类型 + /// 返回其Int32的Endians.Big表示类型 /// /// int ReadInt32(); @@ -91,7 +91,7 @@ public interface IStreamReader /// /// 从流中读取4个字节,并将流内的位置向前推进4个字节, - /// 返回其UInt32表示类型 + /// 返回其UInt32的Endians.Big表示类型 /// /// uint ReadUInt32(); @@ -106,7 +106,7 @@ public interface IStreamReader /// /// 从流中读取8个字节,并将流内的位置向前推进8个字节, - /// 返回其Int64表示类型 + /// 返回其Int64的Endians.Big表示类型 /// /// long ReadInt64(); @@ -121,7 +121,7 @@ public interface IStreamReader /// /// 从流中读取8个字节,并将流内的位置向前推进8个字节, - /// 返回其UInt64表示类型 + /// 返回其UInt64的Endians.Big表示类型 /// /// ulong ReadUInt64(); @@ -165,7 +165,7 @@ public interface IStreamReader string ReadString(Encoding encode, int count); /// - /// 清空所有数据 + /// 清空流的所有数据 /// void Clear(); diff --git a/NetworkSocket/Internal/Context.cs b/NetworkSocket/Internal/Context.cs index 117596a..2a37cf0 100644 --- a/NetworkSocket/Internal/Context.cs +++ b/NetworkSocket/Internal/Context.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Remoting.Messaging; -using System.Text; - + namespace NetworkSocket { /// @@ -17,9 +12,9 @@ internal class Context : IContenxt public ISession Session { get; set; } /// - /// 获取当前会话收到的数据 + /// 获取当前会话收到的数据读取器 /// - public IStreamReader InputStream { get; set; } + public ISessionStreamReader StreamReader { get; set; } /// /// 获取或设置所有会话对象 diff --git a/NetworkSocket/Internal/IocpTcpSession.cs b/NetworkSocket/Internal/IocpTcpSession.cs index 433105f..a308c72 100644 --- a/NetworkSocket/Internal/IocpTcpSession.cs +++ b/NetworkSocket/Internal/IocpTcpSession.cs @@ -96,11 +96,11 @@ private async void RecvCompleted(object sender, SocketAsyncEventArgs arg) return; } - lock (this.InputStream.SyncRoot) + lock (this.StreamReader.SyncRoot) { - this.InputStream.Stream.Seek(0, SeekOrigin.End); - this.InputStream.Stream.Write(arg.Buffer, arg.Offset, arg.BytesTransferred); - this.InputStream.Stream.Seek(0, SeekOrigin.Begin); + this.StreamReader.Stream.Seek(0, SeekOrigin.End); + this.StreamReader.Stream.Write(arg.Buffer, arg.Offset, arg.BytesTransferred); + this.StreamReader.Stream.Seek(0, SeekOrigin.Begin); } // 重新进行一次接收 diff --git a/NetworkSocket/Internal/LastMiddlerware.cs b/NetworkSocket/Internal/LastMiddlerware.cs index a4986eb..2460105 100644 --- a/NetworkSocket/Internal/LastMiddlerware.cs +++ b/NetworkSocket/Internal/LastMiddlerware.cs @@ -24,7 +24,7 @@ internal class LastMiddlerware : IMiddleware /// public Task Invoke(IContenxt context) { - context.InputStream.Clear(); + context.StreamReader.Clear(); context.Session.Close(); return TaskExtend.CompletedTask; } diff --git a/NetworkSocket/Internal/SslTcpSession.cs b/NetworkSocket/Internal/SslTcpSession.cs index 6d63e96..75401cf 100644 --- a/NetworkSocket/Internal/SslTcpSession.cs +++ b/NetworkSocket/Internal/SslTcpSession.cs @@ -174,18 +174,18 @@ private void TryBeginRead() /// 异步结果 private async void EndRead(IAsyncResult asyncResult) { - var read = this.ReadInputStream(asyncResult); + var read = this.ReadSessionStream(asyncResult); if (read <= 0) { this.DisconnectHandler(this); } else { - lock (this.InputStream.SyncRoot) + lock (this.StreamReader.SyncRoot) { - this.InputStream.Stream.Seek(0, SeekOrigin.End); - this.InputStream.Stream.Write(this.bufferRange.Array, this.bufferRange.Offset, read); - this.InputStream.Stream.Seek(0, SeekOrigin.Begin); + this.StreamReader.Stream.Seek(0, SeekOrigin.End); + this.StreamReader.Stream.Write(this.bufferRange.Array, this.bufferRange.Offset, read); + this.StreamReader.Stream.Seek(0, SeekOrigin.Begin); } // 重新进行一次接收 @@ -199,7 +199,7 @@ private async void EndRead(IAsyncResult asyncResult) /// /// /// - private int ReadInputStream(IAsyncResult asyncResult) + private int ReadSessionStream(IAsyncResult asyncResult) { try { diff --git a/NetworkSocket/Internal/TcpSessionBase.cs b/NetworkSocket/Internal/TcpSessionBase.cs index d2ffefb..a01cacd 100644 --- a/NetworkSocket/Internal/TcpSessionBase.cs +++ b/NetworkSocket/Internal/TcpSessionBase.cs @@ -84,9 +84,9 @@ public bool IsConnected public IWrapper Wrapper { get; private set; } /// - /// 获取接收到的未处理数据 + /// 获取接收到数据读取器 /// - public InputStreamReader InputStream { get; private set; } + public SessionStreamReader StreamReader { get; private set; } /// /// 获取本机终结点 @@ -105,7 +105,7 @@ public bool IsConnected public TcpSessionBase() { this.Tag = new Tag(); - this.InputStream = new InputStreamReader(new MemoryStream()); + this.StreamReader = new SessionStreamReader(new SessionStream()); } /// @@ -117,7 +117,7 @@ public virtual void Bind(Socket socket) this.Socket = socket; this.socketClosed = false; - this.InputStream.Clear(); + this.StreamReader.Clear(); this.Tag.ID = null; ((IDictionary)this.Tag).Clear(); this.UnSubscribe(); @@ -267,9 +267,9 @@ private bool TrySetKeepAlive(Socket socket, int dueTime, int period) var inOptionValue = new byte[12]; var outOptionValue = new byte[12]; - ByteConverter.ToBytes(1, Endians.Little).CopyTo(inOptionValue, 0); - ByteConverter.ToBytes(dueTime, Endians.Little).CopyTo(inOptionValue, 4); - ByteConverter.ToBytes(period, Endians.Little).CopyTo(inOptionValue, 8); + ByteConverter.ToBytes(1, ByteConverter.Endian).CopyTo(inOptionValue, 0); + ByteConverter.ToBytes(dueTime, ByteConverter.Endian).CopyTo(inOptionValue, 4); + ByteConverter.ToBytes(period, ByteConverter.Endian).CopyTo(inOptionValue, 8); try { @@ -411,14 +411,14 @@ public void Dispose() protected virtual void Dispose(bool disposing) { this.Close(false); - this.InputStream.Stream.Dispose(); + this.StreamReader.Stream.Dispose(); if (disposing) { this.socketRoot = null; this.Socket = null; this.Tag = null; - this.InputStream = null; + this.StreamReader = null; this.CloseHandler = null; this.DisconnectHandler = null; this.ReceiveAsyncHandler = null; diff --git a/NetworkSocket/NetworkSocket.Net45.csproj b/NetworkSocket/NetworkSocket.Net45.csproj index 5d98440..fc4a87a 100644 --- a/NetworkSocket/NetworkSocket.Net45.csproj +++ b/NetworkSocket/NetworkSocket.Net45.csproj @@ -79,6 +79,7 @@ + @@ -158,7 +159,7 @@ - + @@ -171,7 +172,7 @@ - + diff --git a/NetworkSocket/Reflection/Method.cs b/NetworkSocket/Reflection/Method.cs index 3b33048..17db178 100644 --- a/NetworkSocket/Reflection/Method.cs +++ b/NetworkSocket/Reflection/Method.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Linq.Expressions; using System.Reflection; -using System.Web; namespace NetworkSocket.Reflection { @@ -60,7 +59,7 @@ private static Func CreateInvoker(MethodInfo method) var instance = Expression.Parameter(typeof(object), "instance"); var parameters = Expression.Parameter(typeof(object[]), "parameters"); - var instanceCast = method.IsStatic ? null : Expression.Convert(instance, method.ReflectedType); + var instanceCast = method.IsStatic ? null : Expression.Convert(instance, method.DeclaringType); var parametersCast = method.GetParameters().Select((p, i) => { var parameter = Expression.ArrayIndex(parameters, Expression.Constant(i)); diff --git a/NetworkSocket/Reflection/Property.cs b/NetworkSocket/Reflection/Property.cs index e4c63da..4582928 100644 --- a/NetworkSocket/Reflection/Property.cs +++ b/NetworkSocket/Reflection/Property.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Web; namespace NetworkSocket.Reflection { diff --git a/NetworkSocket/Silverlight/SilverlightPolicyMiddleware.cs b/NetworkSocket/Silverlight/SilverlightPolicyMiddleware.cs index 6f738b7..2d79848 100644 --- a/NetworkSocket/Silverlight/SilverlightPolicyMiddleware.cs +++ b/NetworkSocket/Silverlight/SilverlightPolicyMiddleware.cs @@ -25,13 +25,13 @@ public class SilverlightPolicyMiddleware : IMiddleware /// async Task IMiddleware.Invoke(IContenxt context) { - if (context.Session.Protocol != Protocol.None || context.InputStream.Length != 22) + if (context.Session.Protocol != Protocol.None || context.StreamReader.Length != 22) { await this.Next.Invoke(context); } - context.InputStream.Position = 0; - var request = context.InputStream.ReadString(Encoding.ASCII); + context.StreamReader.Position = 0; + var request = context.StreamReader.ReadString(Encoding.ASCII); if (string.Equals(request, "", StringComparison.OrdinalIgnoreCase)) { this.SendPolicyXML(context); diff --git a/NetworkSocket/Streams/SessionStream.cs b/NetworkSocket/Streams/SessionStream.cs new file mode 100644 index 0000000..3f23658 --- /dev/null +++ b/NetworkSocket/Streams/SessionStream.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NetworkSocket.Streams +{ + /// + /// 表示会话收到的数据流 + /// + public class SessionStream : MemoryStream + { + /// + /// 会话收到的数据流 + /// + public SessionStream() + : base() + { + } + } +} diff --git a/NetworkSocket/Streams/InputStreamReader.cs b/NetworkSocket/Streams/SessionStreamReader.cs similarity index 95% rename from NetworkSocket/Streams/InputStreamReader.cs rename to NetworkSocket/Streams/SessionStreamReader.cs index 383baa1..a3c94c3 100644 --- a/NetworkSocket/Streams/InputStreamReader.cs +++ b/NetworkSocket/Streams/SessionStreamReader.cs @@ -15,12 +15,12 @@ namespace NetworkSocket.Streams /// [DebuggerDisplay("Position = {Position}, Length = {Length}")] [DebuggerTypeProxy(typeof(DebugView))] - public class InputStreamReader : IStreamReader + public class SessionStreamReader : ISessionStreamReader { /// /// 获取所读取的数据流对象 /// - public MemoryStream Stream { get; private set; } + public SessionStream Stream { get; private set; } /// /// 获取同步锁对象 @@ -77,9 +77,9 @@ public byte this[int index] /// /// 对内存流读取 /// - /// 内存流 + /// 会话数据流 /// - public InputStreamReader(MemoryStream stream) + public SessionStreamReader(SessionStream stream) { if (stream == null) { @@ -437,13 +437,13 @@ private class DebugView /// /// 查看的对象 /// - private InputStreamReader view; + private SessionStreamReader view; /// /// 调试视图 /// /// 查看的对象 - public DebugView(InputStreamReader view) + public DebugView(SessionStreamReader view) { this.view = view; } diff --git a/NetworkSocket/TcpClientBase.cs b/NetworkSocket/TcpClientBase.cs index 3493e4e..42942a7 100644 --- a/NetworkSocket/TcpClientBase.cs +++ b/NetworkSocket/TcpClientBase.cs @@ -268,7 +268,7 @@ public virtual SocketError Connect(EndPoint remoteEndPoint) /// 会话 private Task ReceiveHandler(TcpSessionBase session) { - return this.OnReceiveAsync(session.InputStream); + return this.OnReceiveAsync(session.StreamReader); } /// @@ -301,9 +301,9 @@ protected virtual void OnDisconnected() /// /// 当接收到远程端的数据时,将触发此方法 /// - /// 接收到的数据 + /// 接收到的数据读取器 /// - protected abstract Task OnReceiveAsync(IStreamReader inputStream); + protected abstract Task OnReceiveAsync(ISessionStreamReader streamReader); /// diff --git a/NetworkSocket/TcpListener.cs b/NetworkSocket/TcpListener.cs index c52613e..3c82022 100644 --- a/NetworkSocket/TcpListener.cs +++ b/NetworkSocket/TcpListener.cs @@ -292,7 +292,7 @@ private IContenxt CreateContext(TcpSessionBase session) return new Context { Session = session, - InputStream = session.InputStream, + StreamReader = session.StreamReader, AllSessions = this.SessionManager }; } diff --git a/NetworkSocket/Validation/Model.cs b/NetworkSocket/Validation/Model.cs index 286d552..563c01d 100644 --- a/NetworkSocket/Validation/Model.cs +++ b/NetworkSocket/Validation/Model.cs @@ -1,67 +1,59 @@ -using NetworkSocket.Validation.Rules; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Web; - -namespace NetworkSocket.Validation -{ - /// - /// 提供实体验证的态类 - /// - public static class Model - { - /// - /// 为模型进行配置Fluent验证规则 - /// 将和Attribute规则协同生效 - /// - /// 模型类型 - /// - public static FluentApi Fluent() - { - return new FluentApi(); - } - - /// - /// 为匿名模型进行配置Fluent验证规则 - /// 将和Attribute规则协同生效 - /// - /// 模型类型 - /// 匿名实例 - /// - public static FluentApi Fluent(T instance) - { - return new FluentApi(); - } - - /// - /// 验证模型 - /// 包括Attribute规则和Fluent规则 - /// - /// 模型类型 - /// 模型实例 - /// - public static ValidResult ValidFor(T model) - { - if (model == null) - { - return ValidResult.False("模型不能为null .."); - } - - var context = new ValidContext(model, RuleProperty.GetGetProperties(typeof(T))); - foreach (var property in context.Properties) - { - var failureRule = property.GetFailureRule(context); - if (failureRule != null) - { - var message = failureRule.FormatErrorMessage(null); - return ValidResult.False(message, property.Info); - } - } - return ValidResult.True(); - } - } + +namespace NetworkSocket.Validation +{ + /// + /// 提供实体验证的态类 + /// + public static class Model + { + /// + /// 为模型进行配置Fluent验证规则 + /// 将和Attribute规则协同生效 + /// + /// 模型类型 + /// + public static FluentApi Fluent() + { + return new FluentApi(); + } + + /// + /// 为匿名模型进行配置Fluent验证规则 + /// 将和Attribute规则协同生效 + /// + /// 模型类型 + /// 匿名实例 + /// + public static FluentApi Fluent(T instance) + { + return new FluentApi(); + } + + /// + /// 验证模型 + /// 包括Attribute规则和Fluent规则 + /// + /// 模型类型 + /// 模型实例 + /// + public static ValidResult ValidFor(T model) + { + if (model == null) + { + return ValidResult.False("模型不能为null .."); + } + + var context = new ValidContext(model, RuleProperty.GetGetProperties(typeof(T))); + foreach (var property in context.Properties) + { + var failureRule = property.GetFailureRule(context); + if (failureRule != null) + { + var message = failureRule.FormatErrorMessage(null); + return ValidResult.False(message, property.Info); + } + } + return ValidResult.True(); + } + } } \ No newline at end of file diff --git a/NetworkSocket/WebSocket/FrameRequest.cs b/NetworkSocket/WebSocket/FrameRequest.cs index be2f443..87da2df 100644 --- a/NetworkSocket/WebSocket/FrameRequest.cs +++ b/NetworkSocket/WebSocket/FrameRequest.cs @@ -51,18 +51,18 @@ public class FrameRequest /// 解析请求的数据 /// 返回请求数据包 /// - /// 所有收到的数据 + /// 数据读取器 /// 是否要求必须Mask /// /// - public unsafe static FrameRequest Parse(IStreamReader stream, bool requiredMask = true) + public unsafe static FrameRequest Parse(ISessionStreamReader streamReader, bool requiredMask = true) { - if (stream.Length < 2) + if (streamReader.Length < 2) { return null; } - ByteBits byte0 = stream[0]; + ByteBits byte0 = streamReader[0]; var fin = byte0[0]; var frameCode = (FrameCodes)(byte)byte0.Take(4, 4); @@ -72,7 +72,7 @@ public unsafe static FrameRequest Parse(IStreamReader stream, bool requiredMask } var rsv = byte0.Take(1, 3); - ByteBits byte1 = stream[1]; + ByteBits byte1 = streamReader[1]; var mask = byte1[0]; if (requiredMask && mask == false) @@ -87,29 +87,29 @@ public unsafe static FrameRequest Parse(IStreamReader stream, bool requiredMask var contentSize = 0; var contentLength = (int)byte1.Take(1, 7); - stream.Position = 2; + streamReader.Position = 2; if (contentLength == 127) { contentSize = 8; - contentLength = (int)stream.ReadUInt64(); + contentLength = (int)streamReader.ReadUInt64(); } else if (contentLength == 126) { contentSize = 2; - contentLength = (int)stream.ReadUInt16(); + contentLength = (int)streamReader.ReadUInt16(); } var maskSize = mask ? 4 : 0; var packetLength = 2 + maskSize + contentSize + contentLength; - if (stream.Length < packetLength) + if (streamReader.Length < packetLength) { return null; } - var maskingKey = mask ? stream.ReadArray(4) : null; - var content = stream.ReadArray(contentLength); - stream.Clear(packetLength); + var maskingKey = mask ? streamReader.ReadArray(4) : null; + var content = streamReader.ReadArray(contentLength); + streamReader.Clear(packetLength); if (mask && contentLength > 0) { diff --git a/NetworkSocket/WebSocket/HandshakeRequest.cs b/NetworkSocket/WebSocket/HandshakeRequest.cs index 12ca360..158d78a 100644 --- a/NetworkSocket/WebSocket/HandshakeRequest.cs +++ b/NetworkSocket/WebSocket/HandshakeRequest.cs @@ -127,20 +127,20 @@ public bool TrySetResult(SocketError result) /// /// 设置握手结果 /// - /// 输入流 + /// 数据读取器 /// - public bool TrySetResult(IStreamReader inputStream) + public bool TrySetResult(ISessionStreamReader streamReader) { - inputStream.Position = 0; - var index = inputStream.IndexOf(DoubleCrlf); + streamReader.Position = 0; + var index = streamReader.IndexOf(DoubleCrlf); if (index < 0) { return false; } var length = index + DoubleCrlf.Length; - var header = inputStream.ReadString(Encoding.ASCII, length); - inputStream.Clear(length); + var header = streamReader.ReadString(Encoding.ASCII, length); + streamReader.Clear(length); const string pattern = @"^HTTP/1.1 101 Switching Protocols\r\n((?[^:\r\n]+):\s(?[^\r\n]*)\r\n)+\r\n"; var match = Regex.Match(header, pattern, RegexOptions.IgnoreCase); diff --git a/NetworkSocket/WebSocket/JsonWebSocketApiService.cs b/NetworkSocket/WebSocket/JsonWebSocketApiService.cs index 086f640..f4ca5b7 100644 --- a/NetworkSocket/WebSocket/JsonWebSocketApiService.cs +++ b/NetworkSocket/WebSocket/JsonWebSocketApiService.cs @@ -1,15 +1,9 @@ using NetworkSocket.Core; using NetworkSocket.Exceptions; -using NetworkSocket.Tasks; -using NetworkSocket.Util; using System; using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Net.Sockets; -using System.Reflection; -using System.Runtime.Remoting.Messaging; -using System.Text; using System.Threading.Tasks; namespace NetworkSocket.WebSocket diff --git a/NetworkSocket/WebSocket/WebSocketClient.cs b/NetworkSocket/WebSocket/WebSocketClient.cs index 024e2b2..f410e55 100644 --- a/NetworkSocket/WebSocket/WebSocketClient.cs +++ b/NetworkSocket/WebSocket/WebSocketClient.cs @@ -103,17 +103,17 @@ public override sealed async Task ConnectAsync(EndPoint remoteEndPo /// /// 收到数据时 /// - /// 数据流 + /// 数据读取器 /// - protected override sealed async Task OnReceiveAsync(IStreamReader inputStream) + protected override sealed async Task OnReceiveAsync(ISessionStreamReader streamReader) { if (this.handshake.IsWaitting == true) { - this.handshake.TrySetResult(inputStream); + this.handshake.TrySetResult(streamReader); } else { - await this.OnWebSocketRequestAsync(inputStream); + await this.OnWebSocketRequestAsync(streamReader); } } @@ -122,11 +122,11 @@ protected override sealed async Task OnReceiveAsync(IStreamReader inputStream) /// /// 收到请求数据 /// - /// 数据流 + /// 数据读取器 /// - private Task OnWebSocketRequestAsync(IStreamReader inputStream) + private Task OnWebSocketRequestAsync(ISessionStreamReader streamReader) { - var frames = this.GenerateWebSocketFrame(inputStream); + var frames = this.GenerateWebSocketFrame(streamReader); foreach (var frame in frames) { this.OnFrameRequest(frame); @@ -137,16 +137,16 @@ private Task OnWebSocketRequestAsync(IStreamReader inputStream) /// /// 解析生成请求帧 /// - /// 数据流 + /// 数据读取器 /// - private IList GenerateWebSocketFrame(IStreamReader inputStream) + private IList GenerateWebSocketFrame(ISessionStreamReader streamReader) { var list = new List(); while (true) { try { - var request = FrameRequest.Parse(inputStream, false); + var request = FrameRequest.Parse(streamReader, false); if (request == null) { return list; diff --git a/NetworkSocket/WebSocket/WebSocketMiddlewareBase.cs b/NetworkSocket/WebSocket/WebSocketMiddlewareBase.cs index 175ca9a..cde60b1 100644 --- a/NetworkSocket/WebSocket/WebSocketMiddlewareBase.cs +++ b/NetworkSocket/WebSocket/WebSocketMiddlewareBase.cs @@ -75,14 +75,14 @@ private async Task OnWebSocketHandshakeRequestAsync(IContenxt context) return; } - context.InputStream.Clear(result.PackageLength); + context.StreamReader.Clear(result.PackageLength); const string seckey = "Sec-WebSocket-Key"; var secValue = result.Request.Headers[seckey]; this.ResponseHandshake(context, secValue); } catch (Exception) { - context.InputStream.Clear(); + context.StreamReader.Clear(); context.Session.Close(); } } @@ -140,7 +140,7 @@ private IList GenerateWebSocketRequest(IContenxt context) { try { - var request = FrameRequest.Parse(context.InputStream); + var request = FrameRequest.Parse(context.StreamReader); if (request == null) { return list; diff --git "a/NetworkSocket/\346\233\264\346\226\260\350\257\264\346\230\216.txt" "b/NetworkSocket/\346\233\264\346\226\260\350\257\264\346\230\216.txt" index 2326028..1f6b74c 100644 --- "a/NetworkSocket/\346\233\264\346\226\260\350\257\264\346\230\216.txt" +++ "b/NetworkSocket/\346\233\264\346\226\260\350\257\264\346\230\216.txt" @@ -3,7 +3,7 @@ 2、新增ParameterFilter特性过滤器与NotNull特性过滤器; 3、ISession增加ISubscriber支持; 4、移除ByteRange类型,使用ArraySegment替换; -5、新增InputStreamReader与Dispatcher; +5、新增SessionStreamReader与Dispatcher; 6、ITag获取值返回结构体TagItem; 7、TcpClientBase重构; 8、新增Protocol结构体,替换原来的Protocol字符串值; diff --git a/example/Models/LoginResult.cs b/example/Models/LoginResult.cs index c75821f..e0bea4a 100644 --- a/example/Models/LoginResult.cs +++ b/example/Models/LoginResult.cs @@ -8,7 +8,6 @@ namespace Models /// /// 表示登录结果 /// - [Serializable] public class LoginResult { public bool State { get; set; } diff --git a/example/Models/UserInfo.cs b/example/Models/UserInfo.cs index 55943ef..8ac71f3 100644 --- a/example/Models/UserInfo.cs +++ b/example/Models/UserInfo.cs @@ -8,7 +8,6 @@ namespace Models /// /// 用户信息实体 /// - [Serializable] public class UserInfo { ///