Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / FileRegion.cs / 1 / FileRegion.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { using System; using System.Diagnostics; using System.IO; public sealed class FileRegion { long fileLength; string path; long offset; long length; byte[] fixedContent; internal FileRegion(long fileLength, string path, long offset, long length) { this.fileLength = fileLength; this.path = path; this.offset = offset; this.length = length; } internal FileRegion(long fileLength, string path, long offset, byte[] fixedContent) { this.fileLength = fileLength; this.path = path; this.offset = offset; this.length = fixedContent.LongLength; this.fixedContent = fixedContent; } public long FileLength { get { return this.fileLength; } } public long Offset { get { return this.offset; } } public string Path { get { return this.path; } } public Stream GetStream() { if (this.fixedContent != null) { return new MemoryStream(this.fixedContent, 0, this.fixedContent.Length, false, false); } else { Stream innerStream = new FileStream(this.path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); return new Substream(innerStream, this.offset, this.length); } } class Substream : Stream { Stream innerStream; long offset; long length; internal Substream(Stream innerStream, long offset, long length) { this.innerStream = innerStream; this.offset = offset; this.length = length; } public override bool CanRead { get { return true; } } public override bool CanSeek { get { return true; } } public override bool CanWrite { get { return false; } } public override long Length { get { return this.length; } } public override long Position { get { return this.innerStream.Position - this.offset; } set { this.innerStream.Position = value + this.offset; } } public override void Close() { this.innerStream.Close(); base.Close(); } public override void Flush() { this.innerStream.Flush(); } public override int Read(byte[] buffer, int offset, int count) { // Truncate read if it goes past the length of the // stream... // if (this.Length - this.Position < count) { count = checked((int)(this.Length - this.Position)); if (count < 0) return 0; } return this.innerStream.Read(buffer, offset, count); } public override long Seek(long offset, SeekOrigin origin) { if (origin == SeekOrigin.Begin) { offset += this.offset; } else if (origin == SeekOrigin.End) { offset = this.offset + this.length - offset; origin = SeekOrigin.Begin; } return this.innerStream.Seek(offset, origin); } public override void SetLength(long value) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.NotSupported()); } public override void Write(byte[] buffer, int offset, int count) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.NotSupported()); } public override void WriteByte(byte value) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.NotSupported()); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CornerRadiusConverter.cs
- XPathNodeIterator.cs
- DBCommandBuilder.cs
- PrintingPermission.cs
- AutoResetEvent.cs
- RawKeyboardInputReport.cs
- MaskedTextProvider.cs
- FixedSOMElement.cs
- NativeCompoundFileAPIs.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- SingleAnimationUsingKeyFrames.cs
- SerializationUtility.cs
- ToolStripSystemRenderer.cs
- DependentList.cs
- ZipIOFileItemStream.cs
- AppDomainAttributes.cs
- ServiceOperationParameter.cs
- While.cs
- TargetException.cs
- UmAlQuraCalendar.cs
- HiddenField.cs
- ReflectionPermission.cs
- EntityClassGenerator.cs
- HttpAsyncResult.cs
- EnumMemberAttribute.cs
- KeyGestureConverter.cs
- QilInvoke.cs
- SRDisplayNameAttribute.cs
- Point3DCollection.cs
- GridViewRowPresenterBase.cs
- KeyValueSerializer.cs
- ConditionalWeakTable.cs
- UpdateProgress.cs
- ContentPropertyAttribute.cs
- BinaryConverter.cs
- UITypeEditor.cs
- SrgsElementList.cs
- SqlCacheDependencyDatabaseCollection.cs
- UndirectedGraph.cs
- DataTableClearEvent.cs
- InfoCardTrace.cs
- Event.cs
- ConfigurationSectionGroup.cs
- EmissiveMaterial.cs
- StringFunctions.cs
- XmlSchemaGroup.cs
- dataprotectionpermission.cs
- BodyGlyph.cs
- DateTimeFormat.cs
- HebrewNumber.cs
- AnonymousIdentificationSection.cs
- InheritanceService.cs
- DnsPermission.cs
- FileStream.cs
- XmlSchemaAnyAttribute.cs
- ToolStrip.cs
- HttpApplicationStateWrapper.cs
- FileChangeNotifier.cs
- MdImport.cs
- XmlDataImplementation.cs
- ISCIIEncoding.cs
- HttpModuleCollection.cs
- VisualStyleTypesAndProperties.cs
- coordinatorscratchpad.cs
- TimelineGroup.cs
- _NetworkingPerfCounters.cs
- EventMappingSettings.cs
- Viewport3DVisual.cs
- GetPageNumberCompletedEventArgs.cs
- RefreshEventArgs.cs
- TypeBuilder.cs
- Authorization.cs
- NestedContainer.cs
- PropertyGridView.cs
- Condition.cs
- Avt.cs
- cookie.cs
- TextBlock.cs
- XmlAttributeProperties.cs
- PiiTraceSource.cs
- Rfc4050KeyFormatter.cs
- Int64KeyFrameCollection.cs
- LinearGradientBrush.cs
- connectionpool.cs
- StorageFunctionMapping.cs
- MessageQueue.cs
- DataSourceCacheDurationConverter.cs
- InstalledVoice.cs
- BulletedListEventArgs.cs
- ApplicationInterop.cs
- ObjectPersistData.cs
- PasswordTextNavigator.cs
- SoapExtensionTypeElement.cs
- RelationshipSet.cs
- SR.cs
- ObjectDisposedException.cs
- AuthorizationSection.cs
- StdValidatorsAndConverters.cs
- ProcessMonitor.cs
- ServiceDebugBehavior.cs