Ejemplo n.º 1
0
        /// <summary>
        /// Конструктор. Должен вызываться из потока сессии.
        /// </summary>
        /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param>
        /// <param name="session">Сессия.</param>
        /// <param name="blobId">Идентификатор блоба.</param>
        public BlocksBlobStream(IGlobalErrorHandler globalErrorHandler, IEsentSession session, BlobId blobId) : base(globalErrorHandler)
        {
            _session = session ?? throw new ArgumentNullException(nameof(session));
            var sid = _session.Session;

            try
            {
                _usage       = _session.UseSession();
                _transaction = new Transaction(session.Session);
                try
                {
                    var tbl = session.OpenTable(BlobTableInfo.BlobsTableName, OpenTableGrbit.ReadOnly);
                    _table = new BlobsTable(tbl.Session, tbl);
                    try
                    {
                        Api.MakeKey(sid, _table, blobId.Id, MakeKeyGrbit.NewKey);
                        if (!Api.TrySeek(sid, _table, SeekGrbit.SeekEQ))
                        {
                            throw new BlobNotFoundException(blobId);
                        }
                        _inlinedStream = new ColumnStream(sid, _table, _table.GetColumnid(BlobsTable.Column.Data));
                        Length         = _inlinedStream.Length;
                    }
                    catch
                    {
                        _table.Dispose();
                    }
                }
                catch
                {
                    _transaction.Dispose();
                    throw;
                }
            }
            catch
            {
                _usage.Dispose();
                throw;
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param>
 protected BlobStreamBase(IGlobalErrorHandler globalErrorHandler)
 {
     GlobalErrorHandler = globalErrorHandler;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param>
 /// <param name="inlinedStream">Данные.</param>
 public InlineFileStream(IGlobalErrorHandler globalErrorHandler, Stream inlinedStream) : base(globalErrorHandler, inlinedStream)
 {
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param>
 /// <param name="data">Данные.</param>
 public InlineBlobStream(IGlobalErrorHandler globalErrorHandler, byte[] data) : base(globalErrorHandler, new MemoryStream(data ?? throw new ArgumentNullException(nameof(data))))
Ejemplo n.º 5
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param>
 /// <param name="inlinedStream">Данные.</param>
 public InlineBlobStreamBase(IGlobalErrorHandler globalErrorHandler, Stream inlinedStream) : base(globalErrorHandler)
 {
     _inlinedStream = inlinedStream ?? throw new ArgumentNullException(nameof(inlinedStream));
 }