/// <summary> /// Старт записи в поток /// </summary> /// <param name="stream">Поток</param> /// <param name="bloc">Записываемый блок</param> /// <param name="streamExectContext">Контекст записи</param> public static void BeginWrite(this Stream stream, BinaryBloc bloc, IStreamExectContext streamExectContext) => streamExectContext.Exect(bloc.Id, id => { new StreamState { Bloc = bloc, Stream = stream, BufSize = bloc.Buffer.Length, Context = streamExectContext }.BeginWrite(EndWrite); });
/// <summary> /// Старт чтения потока /// </summary> /// <param name="stream">Источник</param> /// <param name="streamExectContext">контекст чтения</param> /// <param name="bufSize">Размер буфера чтения. Если не задан - то поблочное чтение, где размер блока это первые 4 байта</param> public static void BeginRead(this Stream stream, IStreamExectContext streamExectContext, int?bufSize = null) => streamExectContext.Exect(streamExectContext.GetId(), id => { new StreamState { Bloc = new BinaryBloc { Id = id, Buffer = new byte[bufSize ?? stream.ReadInt()] }, Stream = stream, BufSize = bufSize, Context = streamExectContext }.BeginRead(EndRead); });