/// <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; } }
/// <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; } }
/// <summary> /// 当引擎非正常原因自动断开的时候触发此事件 /// </summary> /// <param name="str">断开原因</param> internal void OnEngineLost(string str) { if (EngineLost != null) { CommonMethod.eventInvoket(() => { EngineLost(str); }); FileStart.FileStopAll(); //文件处理那里中断所有的文件 } }
/// <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); }
/// <summary> /// 当引擎完全关闭释放资源的时候触发此事件 /// </summary> internal void OnEngineClose() { if (EngineClose != null && _engineStart) { _engineStart = false; CommonMethod.eventInvoket(() => { EngineClose(); }); FileStart.FileStopAll(); //文件处理那里中断所有的文件 } }
/// <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; }
/// <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; }
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); }
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); }
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); }