Example #1
0
        /// <summary>
        /// 写入文件
        /// </summary>
        /// <param name="fileItem"></param>
        /// <param name="proxy"></param>
        /// <returns></returns>
        public static WriteFileResultItemData WriteFile(WriteFileItemData fileItem, IRemoteFileStorage proxy)
        {
            WriteFileResultItemData result = null;

            ManagerHelper.CheckNullReference(fileItem, "fileItem");
            WriteFileParameter param = new WriteFileParameter();

            param.InputData.Add(fileItem);
            WriteFileResult itemResult = WriteFile(param, proxy);

            if (itemResult.RecordCount > 0)
            {
                result = itemResult.ExecuteResult[0];
            }
            return(result);
        }
Example #2
0
            internal void Initialize(RemoteStreamContext context)
            {
                __Error.CheckNullReference(context, "context");
                if (context.FileID == Guid.Empty)
                {
                    __Error.InvalidateFileID();
                }
                _context = context;
                _proxy   = CreateServiceProxy(context);
                //Stopwatch w = new Stopwatch();
                //w.Start();
                _itemResult = FileManager.OpenFile(context, _proxy);
                //w.Stop();
                //Console.WriteLine("Open File execute times:" + w.ElapsedMilliseconds);
                //_logicFileInfo = FileManager.GetFileInfo(context.FileID, context.Version);
                if (context.FileMode == FileMode.None)
                {
                    __Error.InvalidateFileMode();
                }

                FileAccess access = context.FileAccess;

                if (FileMode.Truncate == context.FileMode)
                {
                    access = FileAccess.Write;
                }

                LogicFileInfoData logicFileInfo = LogicFileInfo;

                if (logicFileInfo == null)
                {
                    if (context.FileMode == FileMode.Open ||
                        context.FileMode == FileMode.Append ||
                        context.FileMode == FileMode.Truncate)
                    {
                        __Error.NotExistsFileID(context.FileID);
                    }
                }

                if (logicFileInfo != null)
                {
                    if (logicFileInfo.ReadOnly && this._canWrite)
                    {
                        __Error.FileReadOnly(context.FileID);
                    }

                    if (context.FileMode == FileMode.CreateNew)
                    {
                        __Error.ExistsFileID(context.FileID);
                    }
                }

                this._canRead  = (access & FileAccess.Read) != 0;
                this._canWrite = (access & FileAccess.Write) != 0;

                PhysicalFileInfoData physicalFileInfo = this.PhysicalFileInfo;

                if (physicalFileInfo != null)
                {
                    this._fileLength = physicalFileInfo.FileLength;
                }

                if (context.FileMode == FileMode.Append)
                {
                    _origin = _fileLength;
                }
            }
Example #3
0
        /// <summary>
        /// 检索文件信息
        /// </summary>
        /// <param name="fetchFileInfoParam"></param>
        /// <returns></returns>
        public static FetchFileInfoResult GetFileInfo(FetchFileInfoParameter fetchFileInfoParam, IRemoteFileStorage proxy)
        {
            ManagerHelper.CheckNullReference(fetchFileInfoParam, "fetchFileInfo");
            if (proxy == null)
            {
                proxy = ServiceProxy;
            }
            FetchFileInfoResult result = proxy.FetchFileInfo(fetchFileInfoParam);

            ManagerHelper.CheckFetchResult(result);
            return(result);
        }
Example #4
0
        /// <summary>
        /// 检索文件信息
        /// </summary>
        /// <param name="logicFileInfo"></param>
        /// <returns></returns>
        public static LogicFileInfoData GetFileInfo(LogicFileInfoItemData logicFileInfo, IRemoteFileStorage proxy)
        {
            ManagerHelper.CheckNullReference(logicFileInfo, "logicFileInfo");
            FetchFileInfoParameter fetchParam = new FetchFileInfoParameter();

            fetchParam.InputData.Add(logicFileInfo);
            FetchFileInfoResult result = GetFileInfo(fetchParam, proxy);

            if (result.RecordCount > 0)
            {
                LogicFileResultItemData item = result.ExecuteResult[0];
                if (!item.LogicFileID.Equals(Guid.Empty))
                {
                    return(item.LogicFileInfo);
                }
            }
            return(null);
        }
Example #5
0
 /// <summary>
 /// 检索文件信息
 /// </summary>
 /// <param name="logicFileID"></param>
 /// <returns></returns>
 public static LogicFileInfoData GetFileInfo(Guid logicFileID, IRemoteFileStorage proxy)
 {
     return(GetFileInfo(logicFileID, 0, proxy));
 }
Example #6
0
        /// <summary>
        /// 判断是否存在对应的文件。
        /// </summary>
        /// <param name="logicFileID"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        public static bool FileExists(Guid logicFileID, int version, IRemoteFileStorage proxy)
        {
            LogicFileInfoData logicFileInfo = GetFileInfo(logicFileID, version, proxy);

            return(logicFileInfo != null);
        }
Example #7
0
 /// <summary>
 /// 判断是否存在对应的文件
 /// </summary>
 /// <param name="logicFileID"></param>
 /// <returns></returns>
 public static bool FileExists(Guid logicFileID, IRemoteFileStorage proxy)
 {
     return(FileExists(logicFileID, 0, proxy));
 }
Example #8
0
        /// <summary>
        /// 关闭文件
        /// </summary>
        /// <param name="closeFileItem"></param>
        /// <param name="proxy"></param>
        /// <returns></returns>
        public static CloseFileResultItemData CloseFile(CloseFileItemData closeFileItem, IRemoteFileStorage proxy)
        {
            CloseFileResultItemData result = null;

            ManagerHelper.CheckNullReference(closeFileItem, "closeFileItem");
            CloseFileParameter param = new CloseFileParameter();

            param.InputData.Add(closeFileItem);
            CloseFileResult itemResult = CloseFile(param, proxy);

            if (itemResult.RecordCount > 0)
            {
                result = itemResult.ExecuteResult[0];
            }
            return(result);
        }