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
- SchemeSettingElementCollection.cs
- Error.cs
- SqlProfileProvider.cs
- ListBindingHelper.cs
- Delegate.cs
- ScopedKnownTypes.cs
- MtomMessageEncoder.cs
- DataGridPageChangedEventArgs.cs
- FileUtil.cs
- FontStretches.cs
- XmlSchemaCollection.cs
- ConditionChanges.cs
- TrackBarRenderer.cs
- MediaCommands.cs
- CacheAxisQuery.cs
- Gdiplus.cs
- DataGridViewCellParsingEventArgs.cs
- DateTimeSerializationSection.cs
- ToolStripSeparator.cs
- SmtpFailedRecipientException.cs
- SqlAggregateChecker.cs
- RectangleConverter.cs
- Int32CollectionValueSerializer.cs
- X509CertificateEndpointIdentity.cs
- localization.cs
- DataGridPreparingCellForEditEventArgs.cs
- CollectionViewSource.cs
- SingletonConnectionReader.cs
- BinaryMethodMessage.cs
- XmlProcessingInstruction.cs
- loginstatus.cs
- PageThemeParser.cs
- FunctionNode.cs
- DebugTraceHelper.cs
- TwoPhaseCommitProxy.cs
- HitTestResult.cs
- InvalidOperationException.cs
- RolePrincipal.cs
- ListBoxAutomationPeer.cs
- CodeStatementCollection.cs
- TypeLibConverter.cs
- BaseCAMarshaler.cs
- Int32.cs
- ImageBrush.cs
- QilNode.cs
- SoapEnumAttribute.cs
- ConfigurationProperty.cs
- TabRenderer.cs
- COAUTHIDENTITY.cs
- ComponentEditorPage.cs
- GenericEnumerator.cs
- ImageProxy.cs
- URLMembershipCondition.cs
- DataContractSerializerSection.cs
- PackagingUtilities.cs
- DesignerCommandSet.cs
- UnauthorizedWebPart.cs
- ArrangedElementCollection.cs
- FunctionImportMapping.cs
- XsltArgumentList.cs
- NavigationWindowAutomationPeer.cs
- WebPartEditorCancelVerb.cs
- DefaultObjectMappingItemCollection.cs
- BuildProviderAppliesToAttribute.cs
- PropertyMetadata.cs
- DataGridViewCheckBoxCell.cs
- HttpBrowserCapabilitiesWrapper.cs
- WindowsIdentity.cs
- MultiDataTrigger.cs
- WmiEventSink.cs
- ConnectAlgorithms.cs
- XmlArrayItemAttribute.cs
- ProtocolsConfiguration.cs
- KeyMatchBuilder.cs
- AutoResizedEvent.cs
- FixedBufferAttribute.cs
- DataSvcMapFileSerializer.cs
- QueryOperationResponseOfT.cs
- cookiecontainer.cs
- Sql8ConformanceChecker.cs
- EditorZoneAutoFormat.cs
- PropertyDescriptorCollection.cs
- WSTrustFeb2005.cs
- SoapExtensionImporter.cs
- DoubleAnimationClockResource.cs
- OleDbInfoMessageEvent.cs
- DataStreams.cs
- InvalidPropValue.cs
- TextServicesManager.cs
- SqlDataSource.cs
- QilFunction.cs
- ListChangedEventArgs.cs
- StructuredCompositeActivityDesigner.cs
- ToolStripLabel.cs
- X509ServiceCertificateAuthentication.cs
- RuntimeHandles.cs
- RecognizerStateChangedEventArgs.cs
- ModelVisual3D.cs
- Latin1Encoding.cs
- XmlSerializerFactory.cs