private static BodyReadStream InternalTryCreateBodyStream(ICoreItem coreItem, BodyReadConfiguration configuration, bool createEmtpyStreamIfNotFound, long?length) { BodyReadStream result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { Stream stream = BodyReadStream.OpenBodyStream(coreItem); disposeGuard.Add <Stream>(stream); Stream stream2 = stream; if (stream2 == null) { if (!createEmtpyStreamIfNotFound) { return(null); } stream2 = Body.GetEmptyStream(); } ConversionCallbackBase conversionCallbackBase; Stream disposable = BodyReadDelegates.CreateStream(coreItem, configuration, stream2, out conversionCallbackBase); disposeGuard.Add <Stream>(disposable); BodyReadStream bodyReadStream = new BodyReadStream(stream, disposable, conversionCallbackBase, length); disposeGuard.Add <BodyReadStream>(bodyReadStream); disposeGuard.Success(); result = bodyReadStream; } return(result); }
internal BodyTextReader(ICoreItem coreItem, BodyReadConfiguration configuration, Stream inputStream) { using (DisposeGuard disposeGuard = this.Guard()) { Stream stream = null; TextReader textReader = null; bool flag = false; this.disposeTracker = this.GetDisposeTracker(); try { if (inputStream == null) { stream = BodyReadStream.OpenBodyStream(coreItem); inputStream = stream; } if (inputStream == null) { inputStream = Body.GetEmptyStream(); } textReader = BodyReadDelegates.CreateReader(coreItem, configuration, inputStream, out this.conversionCallbacks); flag = true; } finally { if (!flag && stream != null) { stream.Dispose(); } } this.reader = textReader; this.bodyStream = stream; this.isDisposed = false; disposeGuard.Success(); } }
internal static BodyReadStream TryCreateBodyReadStream(ICoreItem coreItem, BodyReadConfiguration configuration, bool createEmtpyStreamIfNotFound) { BodyReadStream bodyReadStream = BodyReadStream.InternalTryCreateBodyStream(coreItem, configuration, createEmtpyStreamIfNotFound, null); if (configuration.ShouldCalculateLength) { long streamLength = BodyReadStream.GetStreamLength(bodyReadStream); bodyReadStream.Dispose(); bodyReadStream = BodyReadStream.InternalTryCreateBodyStream(coreItem, configuration, createEmtpyStreamIfNotFound, new long?(streamLength)); } return(bodyReadStream); }
private static long GetStreamLength(BodyReadStream stream) { if (stream == null) { return(0L); } long result; using (Stream stream2 = new BodyStreamSizeCounter(null)) { result = Util.StreamHandler.CopyStreamData(stream, stream2); } return(result); }
private Stream InternalOpenReadStream(BodyReadConfiguration configuration, bool createEmptyStreamIfNotFound) { Body.CheckNull(configuration, "configuration"); this.CheckStreamingExceptions(); Stream result; lock (this.bodyStreamsLock) { this.CheckOpenBodyStreamForRead(); BodyReadStream bodyReadStream = BodyReadStream.TryCreateBodyReadStream(this.coreItem, configuration, createEmptyStreamIfNotFound); this.bodyReadStreams.Add(bodyReadStream); result = bodyReadStream; } return(result); }
public int GetLastNBytesAsString(int lastNBytesToRead, out string readString) { int result; using (Stream stream = BodyReadStream.OpenBodyStream(this.coreItem)) { readString = null; byte[] bytes; int num = Util.StreamHandler.ReadLastBytesOfStream(stream, lastNBytesToRead, out bytes); if (num > 0) { readString = this.GetBodyEncoding().GetString(bytes, 0, num); } result = num; } return(result); }