Exemple #1
0
        public byte[] ReadServiceDataBytes()
        {
            try
            {
                var flag = this.ReadInt();
                if (flag == 1179010630)
                {
                    return(new byte[0]);
                }

                var isgzip = (flag & 1) == 1;
                this.KeepAlive = (flag & 2) == 2;
                var len   = flag >> 2;
                var datas = this.ReceiveDatas(len);
                if (isgzip)
                {
                    datas = GZipHelper.Decompress(datas);
                }
                return(datas);
            }
            catch (System.IO.IOException ex)
            {
                if (ex.InnerException is SocketException)
                {
                    throw ex.InnerException;
                }
                throw ex;
            }
        }
    /// <summary>
    /// Loads user data from Unity's PlayerPrefs
    /// </summary>
    public void Load()
    {
        Debug.Log("SETTINGS: Start Loading");

        if (PlayerPrefs.HasKey(Consts.APP_SHORTNAME))
        {
            Debug.Log("SETTINGS: Loading from local device...");
            string rawStringBinaryData = PlayerPrefs.GetString(Consts.APP_SHORTNAME);
            StandaloneSavedData standaloneSavedData = null;
            try
            {
                string decompressedJSON = GZipHelper.Decompress(rawStringBinaryData);
                standaloneSavedData = JsonUtility.FromJson <StandaloneSavedData>(decompressedJSON);
            }
            catch (Exception ex)
            {
                Debug.Log("SETTING: Error parsing local saved settings object.\n" + ex.Message);
            }
            LoadSettingsFromSavedData(standaloneSavedData);
        }
        else
        {
            Debug.Log("SETTINGS: No saved settings found. Creating new settings.");
            ResetSettings();
            Save();
            Load();
        }
    }
        protected FileContentResult ProcesarArchivo(Archivo archivo)
        {
            byte[] contenido = null;
            if (archivo.Contenido != null)
            {
                contenido = GZipHelper.Decompress(Convert.FromBase64String(archivo.Contenido));
                if (archivo.TipoMime.Contains("text/", StringComparison.OrdinalIgnoreCase))
                {
                    contenido = EncodingHelper.ConvertToUTF8(contenido, _configuration["OracleConfiguration:CharacterSet"]);
                }
            }
            else if (archivo.Url != null)
            {
                using (var webClient = new WebClient())
                {
                    contenido = webClient.DownloadData(archivo.Url);
                }
            }

            if (archivo.Extension.Equals(RiskConstants.FORMATO_HTML, StringComparison.OrdinalIgnoreCase) &&
                HtmlHelper.ObtenerMetaContent(contenido, RiskConstants.META_FORMAT).Equals(RiskConstants.FORMATO_PDF, StringComparison.OrdinalIgnoreCase))
            {
                contenido         = PdfHelper.ConvertToPdf(contenido);
                archivo.Extension = RiskConstants.FORMATO_PDF.ToLower();
                archivo.TipoMime  = MediaTypeNames.Application.Pdf;
            }

            return(File(contenido, archivo.TipoMime, string.Concat(archivo.Nombre, ".", archivo.Extension)));
        }
Exemple #4
0
    private bool Decompress(byte[] data)
    {
        for (int i = 0; i < _response.fileDesc.Count; ++i)
        {
            SlgPB.FileDesc desc = _response.fileDesc[i];

            MemoryStream stream = new MemoryStream();
            stream.Write(data, desc.start, desc.length);

            try
            {
                byte[] buffer = stream.ToArray();
                buffer = GZipHelper.Decompress(buffer);
                if (buffer != null)
                {
                    if (!SaveFile(buffer, desc.name))
                    {
                        return(false);
                    }
                }
            }
            catch (System.Exception e)
            {
                return(false);
            }
        }

        return(true);
    }
        private void OnBinaryMessageReceived(WebSocket webSocket, byte[] buffer)
        {
            Debug.Log("Binary Message received from server. Length: " + buffer.Length);
            labelMessage.text = "Length:" + buffer.Length;
            SocketResponse socketResponse;

            try
            {
                buffer         = GZipHelper.Decompress(DESHelper.DecodeBytes(buffer, AppContext.GetInstance().getDesKey()));
                socketResponse = Serializer.Deserialize <SocketResponse>(new MemoryStream(buffer));
            }
            catch (Exception)
            {
                Debug.LogError("SocketResponse parse error");
                ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR);
                DataHelper.GetInstance().CleanProfile(dbManager);
                return;
            }

            if (socketResponse != null)
            {
                String code = socketResponse.p1;
                if (!"0".Equals(code))
                {
                    ShowMessage(code);
                }
                else
                {
                    HandleSocketResponse(socketResponse);
                }
            }
        }
Exemple #6
0
        private byte[] TakeHeadAndMessage(TcpSocketSaeaSession session)
        {
            var length = session.CompletedBuffer.Length - sizeof(long);
            var bytes  = new byte[length];

            Array.Copy(session.CompletedBuffer, sizeof(long), bytes, 0, length);
            return(GZipHelper.Decompress(bytes));
        }
 public T Decompress <T>(byte[] zipBuffer)
 {
     byte[] buffer = GZipHelper.Decompress(zipBuffer);
     using (MemoryStream stream = new MemoryStream(buffer))
     {
         return(Deserialize <T>(stream));
     }
 }
        public override void OnMessage()
        {
            var defineHeadSize = sizeof(int);

            if (ListByteBuffer.Count < defineHeadSize)
            {
                return;
            }

            byte[] lenBytes   = ListByteBuffer.GetRange(0, defineHeadSize).ToArray();
            int    packageLen = BitConverter.ToInt32(lenBytes, 0);

            if (packageLen < 0 || packageLen > ApplicationConfiguartion.Options.MaxPacketSize || packageLen < 25) //数据不合法 或 小于大概ack固定长度
            {
                this.Log(LogOutLevelType.Error, $"Type:{ConnectionWorkType.ToString()} 长度不合法!");
                this.CloseSession();
                return;
            }

            if (packageLen + defineHeadSize > ListByteBuffer.Count)
            {
                return;
            }

            this._ackRetainData = ListByteBuffer.GetRange(defineHeadSize, packageLen).ToArray();
            ListByteBuffer.RemoveRange(0, packageLen + defineHeadSize);

            var longSize    = sizeof(long);
            var packageBody = GZipHelper.Decompress(_ackRetainData, longSize, _ackRetainData.Length - longSize);
            var messageHead = TakeMessageHead(packageBody);

            if (messageHead == ACK_HEAD)
            {
                var ack = PacketSerializeHelper.DeserializePacket <AckPacket>(TakeMessage(packageBody));

                this._accessId = ack.AccessId;

                if (ValidityAccessIdWithKey((ConnectionWorkType)ack.Type, ack.AccessId, ack.AccessKey))
                {
                    this.ApportionTypeHandlerEvent?.Invoke(this, (ConnectionWorkType)ack.Type);
                }
                else
                {
                    if ((ConnectionWorkType)ack.Type == ConnectionWorkType.MainApplicationConnection)
                    {
                        var midData = MessageHelper.CopyMessageHeadTo(MessageHead.MID_ACCESS_KEY_WRONG);
                        this.CurrentSession.SendAsync(midData.BuilderHeadPacket());
                    }
                    this.Log(LogOutLevelType.Debug, $"Type:{((ConnectionWorkType)ack.Type).ToString()} AccessId:{ack.AccessId} 或AccessKey:{ack.AccessKey} 验证失败,登陆不成功!");
                    this.CloseSession();
                }
            }
            else
            {
                this.CloseSession();
                this.Log(LogOutLevelType.Warning, $"未知消息,连接被关闭!");
            }
        }
Exemple #9
0
        private void PackageProcess()
        {
            if (this._isCompress)
            {
                CompletedBuffer = GZipHelper.Decompress(CompletedBuffer);
            }

            this.NotifyEventHandler?.Invoke(TcpSocketCompletionNotify.OnDataReceived, this);
        }
Exemple #10
0
        private string GetResponseContent(IRestResponse response, bool useGZip)
        {
            var data = AESHelper.Decrypt(response.RawBytes, this._secretKey, null, CipherMode.ECB, PaddingMode.PKCS7);

            if (useGZip)
            {
                data = GZipHelper.Decompress(data);
            }
            return(Encoding.UTF8.GetString(data));
        }
Exemple #11
0
 /// <summary>
 /// 将压缩过的银行字符串转化成可读的字符串
 /// </summary>
 /// <param name="encoding"></param>
 /// <returns></returns>
 public string GetContent(Encoding encoding = null)
 {
     if (!string.IsNullOrWhiteSpace(this.Value))
     {
         var content = (encoding ?? Encoding.GetEncoding("GB18030"))
                       .GetString(GZipHelper.Decompress(Convert.FromBase64String(this.Value)));
         return(content);
     }
     return(null);
 }
 public static T DeserializeXml <T>(byte[] buffer, bool decompress = false)
 {
     if (buffer == null || buffer.Length == 0)
     {
         return(default(T));
     }
     using (var ms = new MemoryStream(decompress ? GZipHelper.Decompress(buffer) : buffer))
     {
         var ser = new XmlSerializer(typeof(T));
         return((T)ser.Deserialize(ms));
     }
 }
Exemple #13
0
        public void StartConsuming()
        {
            ProcessingBlock currentProcessedBlock;

            while (_context.BlockQueue.TryDequeue(out currentProcessedBlock) && !_context.IsExecutionStopped())
            {
                var decompressedBytes = GZipHelper.Decompress(currentProcessedBlock.BlockData);
                _context.ConsumerEventsManager.GetCurrentThreadEvent(currentProcessedBlock.BlockIndex).WaitOne();
                _context.WriteFile.WriteToFile(decompressedBytes);

                _context.ConsumerEventsManager.GetNextThreadEvent(currentProcessedBlock.BlockIndex).Set();
                CheckWorkDone(currentProcessedBlock);
            }
        }
        private void ProcessPackage(byte[] data)
        {
            long                 id      = BitConverter.ToInt64(data, 1);
            GCHandle             gc      = GCHandle.FromIntPtr(new IntPtr(id));
            TcpProxySessionBased session = gc.Target as TcpProxySessionBased;

            if (session == null)
            {
                this.ConsoleWriteLine("DEBUG ProcessPackage SESSION NULL", ConsoleColor.Red);
                return;
            }

            byte[] bytes = new byte[data.Length - (sizeof(Int64) + 1)];
            Array.Copy(data, sizeof(Int64) + 1, bytes, 0, bytes.Length);

            session._receiveTransferredBytes = bytes.Length;
            this._onSessionNotifyProc(SessionCompletedNotify.OnRecv, session as SessionProviderContext);
            session.Buffer.AddRange(bytes);
            do
            {
                if (session.Buffer.Count < 4)
                {
                    return;
                }

                byte[] lenBytes   = session.Buffer.GetRange(0, 4).ToArray();
                int    packageLen = BitConverter.ToInt32(lenBytes, 0);

                //缓冲区越界判断
                if (packageLen > (1024 * 1024 * 2) || packageLen < 1)
                {
                    this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! ProcessPackage DATA", ConsoleColor.Red);
                    this._managerSession.Close(true);
                    return;
                }

                if (packageLen > session.Buffer.Count - 4)
                {
                    return;
                }

                byte[] completeBytes = session.Buffer.GetRange(4, packageLen).ToArray();

                session._completedBuffer = GZipHelper.Decompress(completeBytes);

                this._onSessionNotifyProc(SessionCompletedNotify.OnReceived, session as SessionProviderContext);

                session.Buffer.RemoveRange(0, packageLen + 4);
            } while (session.Buffer.Count > 4);
        }
        public static T DeserializeBinary <T>(byte[] buffer, bool decompress = false)
        {
            if (buffer == null || buffer.Length == 0)
            {
                return(default(T));
            }

            using (var ms = new MemoryStream(decompress ? GZipHelper.Decompress(buffer) : buffer))
            {
                var bf = new BinaryFormatter();
                //var bf = new BinaryFormatter { Binder = new DeserializationBinder(typeof(T)) };
                return((T)bf.Deserialize(ms));
            }
        }
Exemple #16
0
        public override void OnMessage()
        {
            var defineHeadSize = sizeof(int);

            if (ListByteBuffer.Count < defineHeadSize)
            {
                return;
            }

            byte[] lenBytes   = ListByteBuffer.GetRange(0, defineHeadSize).ToArray();
            int    packageLen = BitConverter.ToInt32(lenBytes, 0);

            if (packageLen < 0 || packageLen > ApplicationConfiguartion.MaxPacketSize || packageLen < 25) //数据不合法 或 小于大概ack固定长度
            {
                this.CloseSession();
                return;
            }

            if (packageLen > ListByteBuffer.Count - defineHeadSize)
            {
                return;
            }

            this._ackRetainPacketData = ListByteBuffer.GetRange(0, defineHeadSize + packageLen).ToArray();
            ListByteBuffer.RemoveRange(0, packageLen + defineHeadSize);

            this._accessId = BitConverter.ToInt64(_ackRetainPacketData, defineHeadSize);

            var longSize    = sizeof(long);
            var packageBody = GZipHelper.Decompress(_ackRetainPacketData, defineHeadSize + longSize, _ackRetainPacketData.Length - defineHeadSize - longSize);
            var messageHead = TakeMessageHead(packageBody);

            if (messageHead == ACK_HEAD)
            {
                var ack = PacketSerializeHelper.DeserializePacket <AckPacket>(TakeMessage(packageBody));
                if (ValidityAccessIdWithKey(ack.Type, ack.AccessId, ack.AccessKey))
                {
                    this.ApportionTypeHandlerEvent?.Invoke(this, ack.Type);
                }
                else
                {
                    this.CloseSession();
                }
            }
            else
            {
                this.CloseSession();
            }
        }
Exemple #17
0
        public IActionResult RecuperarLogoGrupo([FromQuery, SwaggerParameter(Description = "Identificador del grupo", Required = true)] int idGrupo,
                                                [FromQuery, SwaggerParameter(Description = "Version", Required = false)] int?version)
        {
            var respuesta = _genService.RecuperarArchivo("T_GRUPOS", "LOGO", idGrupo.ToString(), version);

            if (!respuesta.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                return(ProcesarRespuesta(respuesta));
            }

            var archivo = respuesta.Datos;

            byte[] contenido = GZipHelper.Decompress(Convert.FromBase64String(archivo.Contenido));

            return(File(contenido, archivo.TipoMime, string.Concat(archivo.Nombre, ".", archivo.Extension)));
        }
        private byte[] TakeHeadAndMessage(TcpSocketSaeaSession session)
        {
            var bytes = session.CompletedBuffer.Copy(sizeof(long), session.CompletedBuffer.Length - sizeof(long));

            return(GZipHelper.Decompress(bytes));
        }
Exemple #19
0
        public async Task Enviar(Correo msj)
        {
            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(mailboxFromName, mailboxFromAddress));
            message.To.Add(new MailboxAddress(msj.MensajeTo, msj.MensajeTo));

            if (msj.MensajeReplyTo != null)
            {
                message.ReplyTo.Add(new MailboxAddress(msj.MensajeReplyTo, msj.MensajeReplyTo));
            }

            if (msj.MensajeCc != null)
            {
                message.Cc.Add(new MailboxAddress(msj.MensajeCc, msj.MensajeCc));
            }

            if (msj.MensajeBcc != null)
            {
                message.Bcc.Add(new MailboxAddress(msj.MensajeBcc, msj.MensajeBcc));
            }

            message.Subject = msj.MensajeSubject;

            var multipart = new Multipart("mixed");

            // Body
            string subtype;

            if (msj.MensajeBody.Contains("<html>") && msj.MensajeBody.Contains("</html>"))
            {
                subtype = "html";
            }
            else
            {
                subtype = "plain";
            }
            var body = new TextPart(subtype)
            {
                Text = msj.MensajeBody
            };

            multipart.Add(body);

            // Attachments
            if (msj.Adjuntos.Any())
            {
                foreach (var adjunto in msj.Adjuntos)
                {
                    string contentType = adjunto.TipoMime;
                    if (contentType == null)
                    {
                        contentType = "application/octet-stream";
                    }

                    byte[] contenido = GZipHelper.Decompress(Convert.FromBase64String(adjunto.Contenido));
                    var    ms        = new MemoryStream();
                    ms.Write(contenido, 0, contenido.Length);

                    var attachment = new MimePart(contentType)
                    {
                        Content                 = new MimeContent(ms, ContentEncoding.Default),
                        ContentDisposition      = new ContentDisposition(ContentDisposition.Attachment),
                        ContentTransferEncoding = ContentEncoding.Base64,
                        FileName                = string.Concat(adjunto.Nombre, ".", adjunto.Extension)
                    };
                    multipart.Add(attachment);
                }
            }

            message.Body = multipart;
            await smtpClient.SendAsync(message);
        }
Exemple #20
0
        void OnRequestFinished(HTTPRequest req, HTTPResponse resp)
        {
            HttpFinished();
            switch (req.State)
            {
            // The request finished without any problem.
            case HTTPRequestStates.Finished:
                if (resp.StatusCode == 200)
                {
                    bool isNormal = false;
                    if (resp.Headers.ContainsKey("normal"))
                    {
                        isNormal = "true".Equals(resp.Headers["normal"][0]);
                    }
                    byte[] protoBytes = GZipHelper.Decompress(DESHelper.DecodeBytes(resp.Data, AppContext.GetInstance().getDesKey()));
                    //Debug.Log("isNormal:" + isNormal);
                    if (!isNormal)
                    {
                        SimpleApiResponse response = null;
                        try
                        {
                            response = Serializer.Deserialize <SimpleApiResponse>(new MemoryStream(protoBytes));
                            Debug.Log("error response:" + response);
                        }
                        catch (Exception)
                        {
                            Debug.LogError("HttpMonoBehaviour SimpleApiResponse parse error");
                            ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR);
                        }
                        if (response != null)
                        {
                            ShowMessage(response.code);
                        }
                    }
                    else
                    {
                        Callback(protoBytes);
                    }
                }
                else
                {
                    ShowMessage(ErrorCode.EC_SERVER_ERROR);
                }
                break;

            // The request finished with an unexpected error.
            // The request's Exception property may contain more information about the error.
            case HTTPRequestStates.Error:
                Debug.LogError("Request Finished with Error! " +
                               (req.Exception != null ?
                                (req.Exception.Message + "\n" + req.Exception.StackTrace) :
                                "No Exception"));
                ShowMessage(ErrorCode.EC_NETWORK_UNREACHED);
                break;

            // The request aborted, initiated by the user.
            case HTTPRequestStates.Aborted:
                Debug.LogWarning("Request Aborted!");
                ShowMessage(ErrorCode.EC_NETWORK_UNREACHED);
                break;

            // Ceonnecting to the server timed out.
            case HTTPRequestStates.ConnectionTimedOut:
                Debug.LogError("Connection Timed Out!");
                ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT);
                break;

            // The request didn't finished in the given time.
            case HTTPRequestStates.TimedOut:
                Debug.LogError("Processing the request Timed Out!");
                ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT);
                break;

            default:
                Debug.LogError("Connection Error!");
                ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT);
                break;
            }
        }
        private void PacketHandler(TcpSocketSaeaSession session)
        {
            byte[] data = new byte[session.ReceiveBytesTransferred];
            Array.Copy(session.CompletedBuffer, 0, data, 0, data.Length);

            if ((SessionWorkType)session.AppTokens[0] == SessionWorkType.ManagerSession)
            {
                _dataBuffer.AddRange(data);
                do
                {
                    if (_dataBuffer.Count < 4)
                    {
                        return;
                    }

                    byte[] lenBytes   = _dataBuffer.GetRange(0, 4).ToArray();
                    int    packageLen = BitConverter.ToInt32(lenBytes, 0);

                    //缓冲区越界判断
                    if (packageLen > (1024 * 1024 * 2) || packageLen < 1)
                    {
                        this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! PacketProcess MAIN", ConsoleColor.Red);
                        this._dataBuffer.Clear();
                        session.Close(true);
                        return;
                    }

                    if (packageLen > _dataBuffer.Count - 4)
                    {
                        return;
                    }

                    byte[] completedBytes = _dataBuffer.GetRange(4, packageLen).ToArray();

                    this.OnMessage(completedBytes);

                    _dataBuffer.RemoveRange(0, packageLen + 4);
                } while (_dataBuffer.Count > 4);
            }
            else
            {
                var sessionBased = session.AppTokens[1] as TcpProxySessionBased;

                sessionBased._receiveTransferredBytes = data.Length;

                this._onSessionNotifyProc(SessionCompletedNotify.OnRecv, sessionBased as SessionProviderContext);

                sessionBased.Buffer.AddRange(data);
                do
                {
                    if (sessionBased.Buffer.Count < 4)
                    {
                        return;
                    }

                    byte[] lenBytes   = sessionBased.Buffer.GetRange(0, 4).ToArray();
                    int    packageLen = BitConverter.ToInt32(lenBytes, 0);

                    //缓冲区越界判断
                    if (packageLen > (1024 * 1024 * 2) || packageLen < 1)
                    {
                        this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! PacketProcess WORK", ConsoleColor.Red);
                        session.Close(true);
                        return;
                    }

                    if (packageLen > sessionBased.Buffer.Count - 4)
                    {
                        return;
                    }

                    byte[] completeBytes = sessionBased.Buffer.GetRange(4, packageLen).ToArray();

                    sessionBased._completedBuffer = GZipHelper.Decompress(completeBytes);

                    this._onSessionNotifyProc(SessionCompletedNotify.OnReceived, sessionBased as SessionProviderContext);

                    sessionBased.Buffer.RemoveRange(0, packageLen + 4);
                } while (sessionBased.Buffer.Count > 4);
            }
        }
        /// <summary>
        /// 消息处理
        /// </summary>
        /// <param name="session"></param>
        public void OnMessage(TcpSocketSaeaSession session)
        {
            byte[] data = new byte[session.ReceiveBytesTransferred];
            Array.Copy(session.CompletedBuffer, 0, data, 0, data.Length);

            var type = session.AppTokens[SysContact.INDEX_CHANNELTYPE].ConvertTo <TcpChannelContextServiceType>();

            if (type == TcpChannelContextServiceType.None)
            {
                //当通道类型未确认时,进入该区域处理消息
                _buffer.AddRange(data);
                if (_buffer.Count < 4)
                {
                    return;
                }

                byte[] lenBytes   = _buffer.GetRange(0, 4).ToArray();
                int    packageLen = BitConverter.ToInt32(lenBytes, 0);

                if (packageLen < 0 || packageLen > 1024 * 1024 * 2)
                {
                    session.Close(true);
                    return;
                }

                if (packageLen > _buffer.Count - 4)
                {
                    return;
                }

                //保留ack,与控制端连接时要用到
                this._ack_buffer = _buffer.GetRange(0, packageLen + 4).ToArray();

                byte[] Ack = GZipHelper.Decompress(_buffer.GetRange(4, packageLen).ToArray());

                short headMsg = BitConverter.ToInt16(Ack, 0);

                if (headMsg == AckPacket)
                {
                    //                                                    命令头            消息体             连接类型
                    this._channelType = (TcpChannelContextServiceType)Ack[sizeof(Int16) + sizeof(Int64) + sizeof(Byte) - 1];

                    if (this._channelType == TcpChannelContextServiceType.ManagerChannel)
                    {
                        long accessKey = BitConverter.ToInt64(Ack, 2);

                        if (!AccessKeyExamine.CheckOut(accessKey))//连接密码确认
                        {
                            LogShowQueueHelper.WriteLog("ManagerChannel AccessKey Wrong " + accessKey.ToString(), "err");

                            byte[] body = MessageHelper.CommandCopyTo(MsgCommand.Msg_AccessKeyWrong);

                            byte[] pack = new byte[body.Length + sizeof(Int32)];
                            BitConverter.GetBytes(body.Length).CopyTo(pack, 0);
                            body.CopyTo(pack, 4);

                            session.SendAsync(pack);
                            //session.Close(true);
                            return;
                        }
                    }

                    this._session.AppTokens[SysContact.INDEX_CHANNELTYPE] = this._channelType;

                    if (this._channelType == TcpChannelContextServiceType.ManagerWorkChannel ||
                        this._channelType == TcpChannelContextServiceType.ManagerChannel)
                    {
                        _buffer.RemoveRange(0, packageLen + 4);
                    }

                    this.OnChannelTypeCheckEventHandler?.Invoke(this, this._channelType);

                    if (this._channelType == TcpChannelContextServiceType.ManagerChannel)
                    {
                        this.ManagerPackageProcess();//如果缓冲区还有数据
                    }
                }
                else
                {
                    session.Close(true);
                }
            }
            else if (type == TcpChannelContextServiceType.WorkChannel && this._isJoin)
            {
                if (this._joinSession == null)
                {
                    return;
                }

                this._joinSession.SendAsync(data);
            }
            else if (type == TcpChannelContextServiceType.ManagerWorkChannel && this._channelType != type)//当前连接类型为ManagerWorkChannel且当前通道类型为ManagerWorkChannel时表示通道此时未与工作类型关联,暂时将数据存放在缓存区,待关联时再将数据转发
            {
                if (this._session == null)
                {
                    return;
                }

                this._session.SendAsync(data);
            }
            else if (type == TcpChannelContextServiceType.ManagerChannel)
            {
                this._buffer.AddRange(data);
                this.ManagerPackageProcess();
            }
            else if (type == TcpChannelContextServiceType.MainChannel)
            {
                this.OnMainChannelMessage?.Invoke(this, data);//直接转发
            }
            else
            {
                _buffer.AddRange(data);
            }
        }