/// <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; } }
/// <summary> /// Конструктор. /// </summary> /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param> protected BlobStreamBase(IGlobalErrorHandler globalErrorHandler) { GlobalErrorHandler = globalErrorHandler; }
/// <summary> /// Конструктор. /// </summary> /// <param name="globalErrorHandler">Обработчик глобальных ошибок.</param> /// <param name="inlinedStream">Данные.</param> public InlineFileStream(IGlobalErrorHandler globalErrorHandler, Stream inlinedStream) : base(globalErrorHandler, inlinedStream) { }
/// <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))))
/// <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)); }