# ZKHX.PipeHelper **Repository Path**: Tigerworm/zkhx.-pipe-helper ## Basic Information - **Project Name**: ZKHX.PipeHelper - **Description**: No description available - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-03 - **Last Updated**: 2022-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: 自定义数据管道 ## README ## PipeHelper 自定义数据管道 功能描述:初始化管道实例,包括管道写入和读取。 使用说明:当需要对流数据或协议数据进行传输和处理时,可以使用此管道进行收发管理。 管道内置消息队列,支持多线程异步数据读写。 示例场景1:Tcp对外发送数据 使用描述:程序在发送数据时,初始化PipeHelper对象,并传入PipeType.MergeProtocalMark服务类型, 将待发送协议数据通过PipeHelp的[Delegate_WriterSourceDataToPiper]委托,写入内部消息队列, 之后实例化PipeHelp的[Delegate_ReadCompleteDataInPiper]委托,消息队列对报文处理后将通过[Read]委托将数据还回, 此时已完成报文协议标志和校验长度拼接,之后利用Socket对象发送即可。 示例场景1:Tcp接收数据 使用描述:程序在接收数据时,初始化PipeHelper对象,并传入PipeType.ResloveProtocalContent服务类型, 将Socket接收的协议数据通过PipeHelp的[Delegate_WriterSourceDataToPiper]委托,写入内部消息队列, 之后实例化PipeHelper的[Delegate_ReadCompleteDataInPiper]委托,消息队列对报文处理后将通过[Read]委托将数据还回, 将解析后的数据还回,之后送入业务处理框架即可。 数据协议封装格式: //解析方法([此方法可重写]用于自定义逻辑) protected virtual bool TryResloveProcessOnePackage(ref ReadOnlySequence buffer, out ReadOnlySequence package) //拼装方法([此方法可重写]用于自定义逻辑) protected virtual bool TryMergeProcessOnePackage(ref ReadOnlySequence buffer, out ReadOnlySequence package) 尝试分割处理方法的分割逻辑: 报文格式为:[报文内容][4位报文验证长度][报文截取标志] 思路:报文解析时,找到标志位后,对前序数据进行截取,并通过长度进行验证报文内容是否完整。 当报文内容与校验长度不相同时,认为数据无效