Esempio n. 1
0
        public SharedDirectory GetNetworkDisk(string clientUserID, string netDiskID, string dirPath)
        {
            var rootPath = this.networkDiskPathManager.GetNetworkDiskRootPath(clientUserID, netDiskID);

            if (rootPath == null)
            {
                return(null);
            }

            var iniDirName  = this.networkDiskPathManager.GetNetworkDiskIniDirName(clientUserID, netDiskID);
            var diskRpotDir = rootPath + "\\" + iniDirName + "\\";

            if (!Directory.Exists(diskRpotDir))
            {
                Directory.CreateDirectory(diskRpotDir);
            }

            if (dirPath == null)
            {
                var dir  = new SharedDirectory();
                var disk = new DiskDrive();
                disk.Name               = iniDirName;
                disk.TotalSize          = this.networkDiskPathManager.GetNetworkDiskTotalSize(clientUserID, netDiskID);
                disk.AvailableFreeSpace = disk.TotalSize - this.networkDiskPathManager.GetNetworkDiskSizeUsed(clientUserID, netDiskID);

                dir.DriveList.Add(disk);
                return(dir);
            }

            return(SharedDirectory.GetSharedDirectory(rootPath + dirPath));
        }
Esempio n. 2
0
        public SharedDirectory GetNetworkDisk(string userID, string dirPath)
        {
            string rootPath = this.networkDiskPathManager.GetNetworkDiskRootPath(userID);

            if (rootPath == null)
            {
                return(null);
            }

            if (!Directory.Exists(rootPath + userID))
            {
                Directory.CreateDirectory(rootPath + userID);
            }

            if (dirPath == null)
            {
                SharedDirectory dir  = new SharedDirectory();
                DiskDrive       disk = new DiskDrive();
                disk.Name               = userID;
                disk.TotalSize          = this.networkDiskPathManager.GetNetworkDiskTotalSize(userID);
                disk.AvailableFreeSpace = disk.TotalSize - this.networkDiskPathManager.GetNetworkDiskSizeUsed(userID);

                dir.DriveList.Add(disk);
                return(dir);
            }

            return(SharedDirectory.GetSharedDirectory(rootPath + dirPath));
        }
Esempio n. 3
0
        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);
        }