コード例 #1
0
        /// <summary>
        /// 数据第二层分配中心;把数据归类
        /// </summary>
        /// <param name="stateOne">连接属性</param>
        /// <param name="statecode">收到的数据</param>
        internal void codeManage(TransmitData stateOne, DataModel statecode)
        {
            if (statecode == null || stateOne == null)
            {
                return;
            }
            DataModel stateCode = null;

            switch (statecode.State)
            {
            case CipherCode._commonCode:    //普通数据信息;抛给普通Code去处理
                stateCode = EncryptionDecrypt.deciphering(statecode.DateByte, stateOne);
                CommonCodeManage(stateOne, stateCode);
                break;

            case CipherCode._bigDateCode:                                                 //抛给分包Code去处理
                stateCode = EncDecSeparateDate.FileDecrypt(statecode.DateByte, stateOne); //返回一个带回复数据的模型
                CommonCodeManage(stateOne, stateCode);                                    //发送出去
                break;

            case CipherCode._fileCode:    //抛给文件处理器去处理;如果返回null就不用发送了
                byte[] haveDate = FileStart.ReceiveDateTO(statecode.DateByte, stateOne);
                if (haveDate != null)
                {
                    Send(stateOne, haveDate);
                }
                break;
            }
        }
コード例 #2
0
ファイル: FTxBase.cs プロジェクト: kangkangwang/Server
        /// <summary>
        ///     数据第二层分配中心;把数据归类
        /// </summary>
        /// <param name="stateOne"></param>
        /// <param name="statecode"></param>
        internal void codeManage(StateBase stateOne, StateCode statecode)
        {
            if (statecode == null || stateOne == null)
            {
                return;
            }
            StateCode stateCode = null;

            switch (statecode.State)
            {
            case PasswordCode._commonCode:     //普通数据信息;抛给普通Code去处理
                stateCode = EncryptionDecrypt.deciphering(statecode.DateByte, stateOne);
                CommonCodeManage(stateOne, stateCode);
                break;

            case PasswordCode._bigDateCode:     //抛给分包Code去处理
                stateCode = EncryptionDecryptSeparateDate.FileDecrypt(statecode.DateByte, stateOne);
                CommonCodeManage(stateOne, stateCode);
                break;

            case PasswordCode._fileCode:     //抛给文件处理器去处理;如果返回null就不用发送了
                byte[] haveDate = FileStart.ReceiveDateTO(statecode.DateByte, stateOne);
                if (haveDate != null)
                {
                    Send(stateOne, haveDate);
                }
                break;
            }
        }
コード例 #3
0
ファイル: FTxBase.cs プロジェクト: kangkangwang/Server
 /// <summary>
 ///     当引擎非正常原因自动断开的时候触发此事件
 /// </summary>
 /// <param name="str">断开原因</param>
 internal void OnEngineLost(string str)
 {
     if (EngineLost != null)
     {
         CommonMethod.eventInvoket(() => { EngineLost(str); });
         FileStart.FileStopAll(); //文件处理那里中断所有的文件
     }
 }
コード例 #4
0
ファイル: FTxBase.cs プロジェクト: kangkangwang/Server
 /// <summary>
 ///     对文件进行续传;
 /// </summary>
 /// <param name="stateOne">StateBase</param>
 /// <param name="fileLable">文件标签</param>
 internal void FileContinue(StateBase stateOne, int fileLable)
 {
     byte[] haveDate = FileStart.FileContinue(fileLable, stateOne);
     if (haveDate == null)
     {
         throw new Exception("文件不存在或状态不在暂停状态");
     }
     Send(stateOne, haveDate);
 }
コード例 #5
0
ファイル: FTxBase.cs プロジェクト: kangkangwang/Server
 /// <summary>
 ///     当引擎完全关闭释放资源的时候触发此事件
 /// </summary>
 internal void OnEngineClose()
 {
     if (EngineClose != null && _engineStart)
     {
         _engineStart = false;
         CommonMethod.eventInvoket(() => { EngineClose(); });
         FileStart.FileStopAll(); //文件处理那里中断所有的文件
     }
 }
コード例 #6
0
ファイル: Client.cs プロジェクト: 88886/jnmmes
 /// <summary>
 /// 启动文件发送系统
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void button5_Click(object sender, EventArgs e)
 {
     try
     {
         FileSend = FileStart.StartFileSend(this);
     }
     catch (Exception Ex) { MessageBox.Show(Ex.Message); return; }
     FileSend.BufferSize = 191230;
     button5.Enabled     = false;
 }
コード例 #7
0
 /// <summary>
 /// 关闭相连的scoket以及关联的TcpState,释放所有的资源
 /// </summary>
 /// <param name="stateOne">TcpState</param>
 /// <param name="str">原因</param>
 private void socketRemove(TcpState stateOne, string str)
 {
     if (stateOne == null)
     {
         return;
     }
     stateOne.WorkSocket.Close();
     if (state.Remove(stateOne))                                                        //当没有登录的时候断掉,不触发下面的事件
     {
         CommonMethod.eventInvoket(() => { Disconnection(stateOne.IpEndPoint, str); }); //当客户端断掉的时候触发此事件
         FileOperate(stateOne.IpEndPoint.ToString() + "已经断开");                          //记录
         FileStart.FileStopITxBase(stateOne);
     }
     stateOne = null;
 }
コード例 #8
0
        public void ConvertBinFiles()
        {
            if (!Initialized)
            {
                Error?.Invoke("Code not Initialized");
                return;
            }

            int counter = 0;
            var binList = new DirectoryInfo(SourceDirectory).GetFiles("*.bin", SearchOption.TopDirectoryOnly);

            ActionStart?.Invoke(Actions.Convert, binList.Count());

            foreach (var binFile in binList)
            {
                counter++;

                FileStart?.Invoke(binFile.Name);
                Update?.Invoke(counter, binList.Count(), binFile.Name);

                if (ConvertBinToIso(binFile.FullName))
                {
                    FileOK?.Invoke(binFile.Name);
                }
                else
                {
                    FileNOK?.Invoke(binFile.Name);
                    File.Move(binFile.FullName, Path.Combine(TargetFailureDirectory, binFile.Name));
                    if (File.Exists(Path.ChangeExtension(binFile.FullName, ".cue")))
                    {
                        File.Move(Path.ChangeExtension(binFile.FullName, ".cue"), Path.Combine(TargetFailureDirectory, Path.ChangeExtension(binFile.Name, ".cue")));
                    }
                }

                FileStop?.Invoke(binFile.Name);
            }

            ActionStop?.Invoke(Actions.Convert);
        }
コード例 #9
0
        public void ExtractZipFiles()
        {
            if (!Initialized)
            {
                Error?.Invoke("Code not Initialized");
                return;
            }

            int counter = 0;
            var zipList = new DirectoryInfo(SourceDirectory).GetFiles("*.*", SearchOption.TopDirectoryOnly).Where(x => "*.7z,*.zip,*.rar".Contains(x.Extension.ToLower()));

            ActionStart?.Invoke(Actions.Unzip, zipList.Count());

            foreach (var zipFile in zipList)
            {
                counter++;

                FileStart?.Invoke(zipFile.Name);
                Update?.Invoke(counter, zipList.Count(), zipFile.Name);

                if (ExtractZip(zipFile.FullName))
                {
                    FileOK?.Invoke(zipFile.Name);
                    File.Delete(zipFile.FullName);
                }
                else
                {
                    FileNOK?.Invoke(zipFile.Name);
                    File.Move(zipFile.FullName, Path.Combine(TargetFailureDirectory, zipFile.Name));
                }

                FileStop?.Invoke(zipFile.Name);
            }

            ActionStop?.Invoke(Actions.Unzip);
        }
コード例 #10
0
        private bool IdentifyIsoFiles()
        {
            if (!Initialized)
            {
                Error?.Invoke("Code not Initialized");
                return(false);
            }

            int counter = 0;
            var isoList = new DirectoryInfo(SourceDirectory).GetFiles("*.iso", SearchOption.TopDirectoryOnly);

            ActionStart?.Invoke(Actions.Identify, isoList.Count());

            if (isoList.Count() == 0)
            {
                Error?.Invoke("No ISO files found in the Source Directory");
                return(false);
            }

            LoadGameMapping(out Dictionary <string, string> mapping);

            foreach (var isoFile in isoList)
            {
                counter++;

                FileStart?.Invoke(isoFile.Name);
                Update?.Invoke(counter, isoList.Count(), isoFile.Name);

                string exception = IdentifyIso(isoFile, out string id);
                if (string.IsNullOrEmpty(exception))
                {
                    string newPath = Path.Combine(TargetSuccessDirectory, GetNewFilename(mapping, id, isoFile.Name));
                    if (isoFile.FullName == newPath)
                    {
                        FileOK?.Invoke(isoFile.Name);
                    }
                    else
                    {
                        if (File.Exists(newPath))
                        {
                            Error?.Invoke("Duplicate File");
                            FileNOK?.Invoke(isoFile.Name);
                            MoveFailedFile(isoFile.FullName, Path.Combine(TargetFailureDirectory, isoFile.Name));
                        }
                        else
                        {
                            FileRename?.Invoke(isoFile.Name, Path.GetFileName(newPath));
                            FileOK?.Invoke(isoFile.Name);
                            File.Move(isoFile.FullName, newPath);
                        }
                    }
                }
                else
                {
                    Error?.Invoke(exception);
                    FileNOK?.Invoke(isoFile.Name);
                    MoveFailedFile(isoFile.FullName, Path.Combine(TargetFailureDirectory, isoFile.Name));
                }

                FileStop?.Invoke(isoFile.Name);
            }

            SaveGameMapping(mapping);

            ActionStop?.Invoke(Actions.Identify);

            return(true);
        }