Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        /// <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();
            }
        }