private bool FilterTransferingProject(TransferingProject pro) { NDiskParameters para = Comment4NDisk.Parse(pro.Comment); if (para == null) { return(false); } return(this.ownerID == pro.DestUserID && para.NetDiskID == this.netDiskID); }
void fileOutter_FileRequestReceived(string projectID, string senderID, string projectName, ulong totalSize, ResumedProjectItem resumedFileItem, string comment) { NDiskParameters para = Comment4NDisk.Parse(comment); if (para != null) //表明为网盘或远程磁盘 { return; } GlobalResourceManager.UiSafeInvoker.ActionOnUI <string, string, string, ulong, ResumedProjectItem, string>(this.do_fileOutter_FileRequestReceived, projectID, senderID, projectName, totalSize, resumedFileItem, comment); }
public void Upload(string ownerID, string sourceLocalPath, string newDestPath) { if (File.Exists(sourceLocalPath)) { FileStream stream = File.OpenRead(sourceLocalPath); stream.Close(); stream.Dispose(); } string fileID = null; //BeginSendFile的comment参数值使用存放文件的路径 this.fileOutter.BeginSendFile(ownerID, sourceLocalPath, Comment4NDisk.BuildComment(newDestPath), out fileID); }
void fileController_FileRequestReceived(string fileID, string senderID, string fileName, ulong fileLength, ResumedProjectItem resumedFileItem, string comment) { var paras = Comment4NDisk.Parse(comment); if (paras == null) { return; } if (resumedFileItem != null) { this.fileController.BeginReceiveFile(fileID, resumedFileItem.LocalSavePath); //续传 return; } var rootPath = this.networkDiskPathManager.GetNetworkDiskRootPath(senderID, paras.NetDiskID); this.fileController.BeginReceiveFile(fileID, rootPath + paras.DirectoryPath); }
void fileOutter_FileRequestReceived(string projectID, string senderID, string fileName, ulong totalSize, ResumedProjectItem resumedFileItem, string comment) { NDiskParameters paras = Comment4NDisk.Parse(comment); if (paras == null) { return; } //string savePath = resumedFileItem != null ? resumedFileItem.LocalSavePath : comment; //上述bug,2014.11.04修复 string savePath = resumedFileItem != null ? resumedFileItem.LocalSavePath : paras.DirectoryPath; string fullPath = this.ConstructFullPath(savePath); if (savePath != null && savePath.Length >= 2 && savePath[1] == ':') //表示为含驱动器的绝对路径。 { fullPath = savePath; } this.fileOutter.BeginReceiveFile(projectID, fullPath); }
public byte[] HandleQuery(string sourceUserID, int informationType, byte[] info) { #region ReqDirectory if (informationType == this.fileDirectoryInfoTypes.ReqDirectory) { ReqDirectoryContract contract = CompactPropertySerializer.Default.Deserialize <ReqDirectoryContract>(info, 0); SharedDirectory dir = this.networkDisk.GetNetworkDisk(sourceUserID, contract.NetDiskID, contract.DirectoryPath); return(CompactPropertySerializer.Default.Serialize <ResDirectoryContract>(new ResDirectoryContract(dir))); } #endregion #region ReqNetworkDiskState if (informationType == this.fileDirectoryInfoTypes.ReqNetworkDiskState) { string netDiskID = null; if (info != null) { netDiskID = System.Text.Encoding.UTF8.GetString(info); } NetworkDiskState state = this.networkDisk.GetNetworkDiskState(sourceUserID, netDiskID); return(CompactPropertySerializer.Default.Serialize <ResNetworkDiskStateContract>(new ResNetworkDiskStateContract(state))); } #endregion if (informationType == this.fileDirectoryInfoTypes.Rename) { RenameContract contract = CompactPropertySerializer.Default.Deserialize <RenameContract>(info, 0); try { this.networkDisk.Rename(sourceUserID, contract.NetDiskID, contract.ParentDirectoryPath, contract.IsFile, contract.OldName, contract.NewName); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract())); } catch (Exception ee) { string error = ""; if (ee is IOException) { error = string.Format("{0} 正在被使用!", Path.GetFileName(contract.OldName)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error)));; } } #region DownloadFile if (informationType == this.fileDirectoryInfoTypes.Download) { DownloadContract contract = CompactPropertySerializer.Default.Deserialize <DownloadContract>(info, 0); string fileOrDirPath = this.networkDisk.GetNetworkDiskRootPath(sourceUserID, contract.NetDiskID) + contract.SourceRemotePath; string error = ""; try { if (File.Exists(fileOrDirPath)) { FileStream stream = File.OpenRead(fileOrDirPath); stream.Close(); stream.Dispose(); } else { if (!Directory.Exists(fileOrDirPath)) { error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fileOrDirPath)); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } } } catch (Exception ee) { if (ee is FileNotFoundException) { error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fileOrDirPath)); } else if (ee is IOException) { error = string.Format("{0} 正在被其它进程占用!", Path.GetFileName(fileOrDirPath)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } string projectID = null; this.fileController.BeginSendFile(sourceUserID, fileOrDirPath, Comment4NDisk.BuildComment(contract.SaveLocalPath, contract.NetDiskID), out projectID); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract())); } #endregion #region DeleteFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Delete) { OperationResultConatract resultContract = new OperationResultConatract(); try { DeleteContract contract = CompactPropertySerializer.Default.Deserialize <DeleteContract>(info, 0); this.networkDisk.DeleteFileOrDirectory(sourceUserID, contract.NetDiskID, contract.SourceParentDirectoryPath, contract.FilesBeDeleted, contract.DirectoriesBeDeleted); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region CopyFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Copy) { OperationResultConatract resultContract = new OperationResultConatract(); try { CopyContract contract = CompactPropertySerializer.Default.Deserialize <CopyContract>(info, 0); this.networkDisk.Copy(sourceUserID, contract.NetDiskID, contract.SourceParentDirectoryPath, contract.FilesBeCopyed, contract.DirectoriesBeCopyed, contract.DestParentDirectoryPath); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region MoveFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Move) { OperationResultConatract resultContract = new OperationResultConatract(); try { MoveContract contract = CompactPropertySerializer.Default.Deserialize <MoveContract>(info, 0); this.networkDisk.Move(sourceUserID, contract.NetDiskID, contract.OldParentDirectoryPath, contract.FilesBeMoved, contract.DirectoriesBeMoved, contract.NewParentDirectoryPath); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion return(null); }
public byte[] HandleQuery(string sourceUserID, int informationType, byte[] info) { #region ReqDirectory if (informationType == this.fileDirectoryInfoTypes.ReqDirectory) { ReqDirectoryContract contract = CompactPropertySerializer.Default.Deserialize <ReqDirectoryContract>(info, 0); string fullPath = this.ConstructFullPath(contract.DirectoryPath); SharedDirectory dir = SharedDirectory.GetSharedDirectory(fullPath); return(CompactPropertySerializer.Default.Serialize <ResDirectoryContract>(new ResDirectoryContract(dir))); } #endregion #region Rename if (informationType == this.fileDirectoryInfoTypes.Rename) { RenameContract contract = CompactPropertySerializer.Default.Deserialize <RenameContract>(info, 0); string fullPath = this.ConstructFullPath(contract.ParentDirectoryPath); try { if (contract.IsFile) { File.Move(fullPath + contract.OldName, fullPath + contract.NewName); } else { Directory.Move(fullPath + contract.OldName, fullPath + contract.NewName); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract()));; } catch (Exception ee) { string error = ""; if (ee is IOException) { error = string.Format("{0} 正在被使用!", Path.GetFileName(contract.OldName)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error)));; } } #endregion #region DownloadFile if (informationType == this.fileDirectoryInfoTypes.Download) { DownloadContract contract = CompactPropertySerializer.Default.Deserialize <DownloadContract>(info, 0); string fullPath = this.ConstructFullPath(contract.SourceRemotePath); if (contract.IsFile) { try { FileStream stream = File.OpenRead(fullPath); stream.Close(); stream.Dispose(); } catch (Exception ee) { string error = ""; if (ee is FileNotFoundException) { error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fullPath)); } else if (ee is IOException) { error = string.Format("{0} 正在被其它进程占用!", Path.GetFileName(fullPath)); } else { error = ee.Message; } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } } else { if (!Directory.Exists(fullPath)) { string error = string.Format("{0} 不存在或已经被删除!", Path.GetFileName(fullPath)); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract(error))); } } string fileID = null; this.fileOutter.BeginSendFile(sourceUserID, fullPath, Comment4NDisk.BuildComment(contract.SaveLocalPath, contract.NetDiskID), out fileID); return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(new OperationResultConatract()));; } #endregion #region DeleteFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Delete) { OperationResultConatract resultContract = new OperationResultConatract(); try { DeleteContract contract = CompactPropertySerializer.Default.Deserialize <DeleteContract>(info, 0); string fullPath = this.ConstructFullPath(contract.SourceParentDirectoryPath); if (contract.FilesBeDeleted != null) { foreach (string fileName in contract.FilesBeDeleted) { string filePath = fullPath + fileName; if (File.Exists(filePath)) { File.Delete(filePath); } } } if (contract.DirectoriesBeDeleted != null) { foreach (string dirName in contract.DirectoriesBeDeleted) { string dirPath = fullPath + dirName + "\\"; if (Directory.Exists(dirPath)) { FileHelper.DeleteDirectory(dirPath); } } } } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region CopyFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Copy) { OperationResultConatract resultContract = new OperationResultConatract(); try { CopyContract contract = CompactPropertySerializer.Default.Deserialize <CopyContract>(info, 0); FileHelper.Copy(this.ConstructFullPath(contract.SourceParentDirectoryPath), contract.FilesBeCopyed, contract.DirectoriesBeCopyed, this.ConstructFullPath(contract.DestParentDirectoryPath)); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion #region MoveFileOrDirectory if (informationType == this.fileDirectoryInfoTypes.Move) { OperationResultConatract resultContract = new OperationResultConatract(); try { MoveContract contract = CompactPropertySerializer.Default.Deserialize <MoveContract>(info, 0); FileHelper.Move(this.ConstructFullPath(contract.OldParentDirectoryPath), contract.FilesBeMoved, contract.DirectoriesBeMoved, this.ConstructFullPath(contract.NewParentDirectoryPath)); } catch (Exception ee) { resultContract = new OperationResultConatract(ee.Message); } return(CompactPropertySerializer.Default.Serialize <OperationResultConatract>(resultContract)); } #endregion return(null); }