public WopiSession(string accessId, string filePath, string login = "******", string name = "Anonymous", string email = "", bool isAnonymous = true) { _accessId = accessId; _fileinfo = new FileInfo(filePath); _name = name; _login = login; _email = email; _isAnonymous = isAnonymous; _disposal = new DisposalEscrow(_accessId); CobaltFilePartitionConfig content = new CobaltFilePartitionConfig(); content.IsNewFile = true; content.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), _disposal, _accessId + @".Content"); content.cellSchemaIsGenericFda = true; content.CellStorageConfig = new CellStorageConfig(); content.Schema = CobaltFilePartition.Schema.ShreddedCobalt; content.PartitionId = FilePartitionId.Content; CobaltFilePartitionConfig coauth = new CobaltFilePartitionConfig(); coauth.IsNewFile = true; coauth.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), _disposal, _accessId + @".CoauthMetadata"); coauth.cellSchemaIsGenericFda = false; coauth.CellStorageConfig = new CellStorageConfig(); coauth.Schema = CobaltFilePartition.Schema.ShreddedCobalt; coauth.PartitionId = FilePartitionId.CoauthMetadata; CobaltFilePartitionConfig wacupdate = new CobaltFilePartitionConfig(); wacupdate.IsNewFile = true; wacupdate.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), _disposal, _accessId + @".WordWacUpdate"); wacupdate.cellSchemaIsGenericFda = false; wacupdate.CellStorageConfig = new CellStorageConfig(); wacupdate.Schema = CobaltFilePartition.Schema.ShreddedCobalt; wacupdate.PartitionId = FilePartitionId.WordWacUpdate; Dictionary <FilePartitionId, CobaltFilePartitionConfig> pd = new Dictionary <FilePartitionId, CobaltFilePartitionConfig>(); pd.Add(FilePartitionId.Content, content); pd.Add(FilePartitionId.WordWacUpdate, wacupdate); pd.Add(FilePartitionId.CoauthMetadata, coauth); _cobaltFile = new CobaltFile(_disposal, pd, new WopiHostLockingStore(this), null); if (_fileinfo.Exists) { var src = FileAtom.FromExisting(_fileinfo.FullName, _disposal); Cobalt.Metrics o1; _cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).SetStream(RootId.Default.Value, src, out o1); _cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).GetStream(RootId.Default.Value).Flush(); } }
public CobaltSession(string sessionId, string filePath, string login = "******", string name = "Anonymous", string email = "", bool isAnonymous = true) : base(sessionId, filePath, login, name, email, isAnonymous) { m_disposal = new DisposalEscrow(m_sessionId); CobaltFilePartitionConfig content = new CobaltFilePartitionConfig(); content.IsNewFile = true; content.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".Content"); content.cellSchemaIsGenericFda = true; content.CellStorageConfig = new CellStorageConfig(); content.Schema = CobaltFilePartition.Schema.ShreddedCobalt; content.PartitionId = FilePartitionId.Content; CobaltFilePartitionConfig coauth = new CobaltFilePartitionConfig(); coauth.IsNewFile = true; coauth.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".CoauthMetadata"); coauth.cellSchemaIsGenericFda = false; coauth.CellStorageConfig = new CellStorageConfig(); coauth.Schema = CobaltFilePartition.Schema.ShreddedCobalt; coauth.PartitionId = FilePartitionId.CoauthMetadata; CobaltFilePartitionConfig wacupdate = new CobaltFilePartitionConfig(); wacupdate.IsNewFile = true; wacupdate.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".WordWacUpdate"); wacupdate.cellSchemaIsGenericFda = false; wacupdate.CellStorageConfig = new CellStorageConfig(); wacupdate.Schema = CobaltFilePartition.Schema.ShreddedCobalt; wacupdate.PartitionId = FilePartitionId.WordWacUpdate; Dictionary <FilePartitionId, CobaltFilePartitionConfig> partitionConfs = new Dictionary <FilePartitionId, CobaltFilePartitionConfig>(); partitionConfs.Add(FilePartitionId.Content, content); partitionConfs.Add(FilePartitionId.WordWacUpdate, wacupdate); partitionConfs.Add(FilePartitionId.CoauthMetadata, coauth); m_cobaltFile = new CobaltFile(m_disposal, partitionConfs, new CobaltHostLockingStore(this), null); if (m_fileinfo.Exists) { String appdata_path = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData); appdata_path = Path.Combine(appdata_path, @"WopiCobaltHost"); if (!Directory.Exists(appdata_path)) { Directory.CreateDirectory(appdata_path); } String cache_file = Path.Combine(appdata_path, m_fileinfo.Name); if (File.Exists(cache_file)) { File.Delete(cache_file); } File.Copy(m_fileinfo.FullName, cache_file, true); var file_atom = FileAtom.FromExisting(cache_file, m_disposal); //if want to avoid temp file, you can use memory Atom below //MemoryStream ms = new MemoryStream(); //using (FileStream fileStream = m_fileinfo.OpenRead()) //{ // fileStream.CopyTo(ms); //} //var src_atom = new AtomFromByteArray(ms.ToArray()); Cobalt.Metrics o1; m_cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).SetStream(RootId.Default.Value, file_atom, out o1); m_cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).GetStream(RootId.Default.Value).Flush(); } }
/// <summary> /// 查看Session /// </summary> /// <param name="sessionId">当前session Id</param> /// <param name="filePath">文件路径</param> /// <param name="login">当前登录用户</param> /// <param name="name">文件所属人(作者)</param> /// <param name="isAnonymous">是否匿名</param> public CobaltSession(string sessionId, string filePath, string login = "******", string name = "Anonymous", bool isAnonymous = true) : base(sessionId, filePath, login, name, isAnonymous) { m_disposal = new DisposalEscrow(m_sessionId); CobaltFilePartitionConfig content = new CobaltFilePartitionConfig(); content.IsNewFile = true; content.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".Content"); content.cellSchemaIsGenericFda = true; content.CellStorageConfig = new CellStorageConfig(); content.Schema = CobaltFilePartition.Schema.ShreddedCobalt; content.PartitionId = FilePartitionId.Content; CobaltFilePartitionConfig coauth = new CobaltFilePartitionConfig(); coauth.IsNewFile = true; coauth.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".CoauthMetadata"); coauth.cellSchemaIsGenericFda = false; coauth.CellStorageConfig = new CellStorageConfig(); coauth.Schema = CobaltFilePartition.Schema.ShreddedCobalt; coauth.PartitionId = FilePartitionId.CoauthMetadata; CobaltFilePartitionConfig wacupdate = new CobaltFilePartitionConfig(); wacupdate.IsNewFile = true; wacupdate.HostBlobStore = new TemporaryHostBlobStore(new TemporaryHostBlobStore.Config(), m_disposal, m_sessionId + @".WordWacUpdate"); wacupdate.cellSchemaIsGenericFda = false; wacupdate.CellStorageConfig = new CellStorageConfig(); wacupdate.Schema = CobaltFilePartition.Schema.ShreddedCobalt; wacupdate.PartitionId = FilePartitionId.WordWacUpdate; Dictionary <FilePartitionId, CobaltFilePartitionConfig> partitionConfs = new Dictionary <FilePartitionId, CobaltFilePartitionConfig>(); partitionConfs.Add(FilePartitionId.Content, content); partitionConfs.Add(FilePartitionId.WordWacUpdate, wacupdate); partitionConfs.Add(FilePartitionId.CoauthMetadata, coauth); m_cobaltFile = new CobaltFile(m_disposal, partitionConfs, new CobaltHostLockingStore(this), null); if (m_fileinfo.Exists) { //String appdata_path = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData); String appdata_path = @"C:\temp"; appdata_path = Path.Combine(appdata_path, @"WopiCobaltHost"); logger.Info($"临时文件家路径:{appdata_path}"); if (!Directory.Exists(appdata_path)) { Directory.CreateDirectory(appdata_path); } String cache_file = Path.Combine(appdata_path, m_fileinfo.Name); if (File.Exists(cache_file)) { File.Delete(cache_file); } File.Copy(m_fileinfo.FullName, cache_file, true); var file_atom = FileAtom.FromExisting(cache_file, m_disposal); Cobalt.Metrics o1; m_cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).SetStream(RootId.Default.Value, file_atom, out o1); m_cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).GetStream(RootId.Default.Value).Flush(); } }