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
- ParserOptions.cs
- Utils.cs
- _UriSyntax.cs
- Thread.cs
- SliderAutomationPeer.cs
- LinqDataSourceDeleteEventArgs.cs
- XmlSchemaComplexType.cs
- MeasurementDCInfo.cs
- DbQueryCommandTree.cs
- InplaceBitmapMetadataWriter.cs
- TypeDescriptorContext.cs
- DependencyPropertyKey.cs
- MetadataHelper.cs
- SmtpException.cs
- ExtensionQuery.cs
- CompiledELinqQueryState.cs
- ListBoxAutomationPeer.cs
- DynamicPropertyHolder.cs
- RemoteWebConfigurationHostStream.cs
- AttachedAnnotation.cs
- ChildChangedEventArgs.cs
- DictionaryContent.cs
- Rule.cs
- AdCreatedEventArgs.cs
- SqlProviderServices.cs
- IssuedTokenClientElement.cs
- Rfc2898DeriveBytes.cs
- HandleCollector.cs
- PatternMatcher.cs
- Models.cs
- InstanceBehavior.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- HttpCookieCollection.cs
- IntSecurity.cs
- Parameter.cs
- FatalException.cs
- documentsequencetextpointer.cs
- SystemParameters.cs
- ListCollectionView.cs
- DateTimeStorage.cs
- XamlFrame.cs
- PrintEvent.cs
- NullableFloatAverageAggregationOperator.cs
- Ipv6Element.cs
- BmpBitmapDecoder.cs
- ExceptionHandlerDesigner.cs
- PenLineJoinValidation.cs
- ToolStripDropDownMenu.cs
- ConfigDefinitionUpdates.cs
- DataGridViewDataConnection.cs
- Rotation3DAnimationBase.cs
- SerializationFieldInfo.cs
- WinInet.cs
- ProcessHostServerConfig.cs
- RealizedColumnsBlock.cs
- HtmlTableRowCollection.cs
- ValidatedMobileControlConverter.cs
- SQLInt32.cs
- MenuItemStyleCollectionEditor.cs
- DeadCharTextComposition.cs
- SByte.cs
- DataGridColumn.cs
- XmlSerializationWriter.cs
- Visual3D.cs
- MimeTypePropertyAttribute.cs
- Transform3D.cs
- reliableinputsessionchannel.cs
- WebServiceTypeData.cs
- SqlConnectionPoolProviderInfo.cs
- EdmToObjectNamespaceMap.cs
- SqlTypesSchemaImporter.cs
- WindowsEditBoxRange.cs
- ObjectAnimationBase.cs
- securestring.cs
- UrlMappingsModule.cs
- PersistenceException.cs
- PersonalizationProviderCollection.cs
- SoapReflectionImporter.cs
- FragmentNavigationEventArgs.cs
- LockedActivityGlyph.cs
- RightsManagementInformation.cs
- ExtentCqlBlock.cs
- QueryCorrelationInitializer.cs
- CodeMethodInvokeExpression.cs
- BufferModesCollection.cs
- shaperfactoryquerycachekey.cs
- StringArrayConverter.cs
- ZipIOExtraFieldPaddingElement.cs
- MSAAWinEventWrap.cs
- ConfigurationManagerInternal.cs
- SelectionItemPatternIdentifiers.cs
- SevenBitStream.cs
- IfAction.cs
- ServicePerformanceCounters.cs
- SystemColorTracker.cs
- ServiceInfoCollection.cs
- SimpleTypeResolver.cs
- FileDialogCustomPlace.cs
- StreamAsIStream.cs
- SettingsBase.cs