internal MemoryNodeData() { Content = new MemoryStream(); TimeInfo = new NodeTimeInfo(); Children = new List <NodeBase>(); Attributes = new NodeAttributes(FileAttributes.Offline); }
protected override NodeBase SetTimeInfo(NodeBase node, NodeTimeInfo timeInfo) { try { using (var scope = _factory.CreateScope()) { var uow = scope.ServiceProvider.GetRequiredService <IUnitOfWork>(); if (node.NodeType == NodeType.Directory) { var folderEntity = CompositeFileSystemHelper.FolderPathToEntity(uow, _userEntity, node.Path.StringPath); folderEntity.LastAccessed = timeInfo.LastAccessTime; folderEntity.LastUpdated = timeInfo.LastWriteTime; uow.UserFolders.Update(folderEntity); uow.Commit(); return(node); } else if (node.NodeType == NodeType.File) { var fileEntity = CompositeFileSystemHelper.FilePathToEntity(uow, _userEntity, node.Path.StringPath); fileEntity.LastAccessed = timeInfo.LastAccessTime; fileEntity.LastUpdated = timeInfo.LastWriteTime; uow.UserFiles.Update(fileEntity); uow.Commit(); return(node); } else { throw new NotImplementedException(); } } } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override NodeBase SetTimeInfo(NodeBase node, NodeTimeInfo newTimeInfo) { try { if (node.NodeType == NodeType.Directory) { WindowsIdentity.RunImpersonated(_userToken, () => { var folder = SmbFileSystemHelper.FolderPathToCIFS(_userMount + node.Path.StringPath); folder.CreationTime = newTimeInfo.CreationTime; folder.LastAccessTime = newTimeInfo.LastAccessTime; folder.LastWriteTime = newTimeInfo.LastWriteTime; }); } else if (node.NodeType == NodeType.File) { WindowsIdentity.RunImpersonated(_userToken, () => { var file = SmbFileSystemHelper.FilePathToCIFS(_userMount + node.Path.StringPath); file.CreationTime = newTimeInfo.CreationTime; file.LastAccessTime = newTimeInfo.LastAccessTime; file.LastWriteTime = newTimeInfo.LastWriteTime; }); } else { throw new NotImplementedException(); } return(node); } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override NodeBase SetTimeInfo(NodeBase node, NodeTimeInfo newTimeInfo) { _store[node].TimeInfo = newTimeInfo; return(node); }