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
- FontStretchConverter.cs
- ZipFileInfo.cs
- ReferentialConstraint.cs
- ApplicationSecurityInfo.cs
- RuleSettingsCollection.cs
- WriteStateInfoBase.cs
- ProcessHostFactoryHelper.cs
- GlyphRun.cs
- AstNode.cs
- TextBounds.cs
- SqlDataReader.cs
- Compilation.cs
- SpellerError.cs
- DateTimeFormatInfoScanner.cs
- EntitySqlQueryCacheKey.cs
- CodeExpressionCollection.cs
- PolicyLevel.cs
- DictionaryEntry.cs
- FixUp.cs
- BrowserDefinition.cs
- PropertyDescriptorGridEntry.cs
- EventLogPermissionEntry.cs
- InputLangChangeRequestEvent.cs
- ListManagerBindingsCollection.cs
- HtmlHistory.cs
- MetaType.cs
- ECDiffieHellmanCngPublicKey.cs
- ChoiceConverter.cs
- DrawingImage.cs
- RegexNode.cs
- X509WindowsSecurityToken.cs
- SystemColors.cs
- Content.cs
- HttpProtocolReflector.cs
- DataGridViewButtonCell.cs
- PersonalizationEntry.cs
- TiffBitmapDecoder.cs
- _ContextAwareResult.cs
- DataBinding.cs
- SoapCodeExporter.cs
- CodeSubDirectory.cs
- StopRoutingHandler.cs
- LinkedResource.cs
- CollectionType.cs
- TextElementEditingBehaviorAttribute.cs
- OrderPreservingSpoolingTask.cs
- XmlLanguageConverter.cs
- GeneralTransform.cs
- SchemaEntity.cs
- RuntimeIdentifierPropertyAttribute.cs
- StatusBarPanelClickEvent.cs
- OleDbPropertySetGuid.cs
- HttpFileCollection.cs
- BamlCollectionHolder.cs
- ChangePasswordDesigner.cs
- MetabaseSettings.cs
- ExceptionHandlerDesigner.cs
- TemplateBindingExtension.cs
- CatalogZoneBase.cs
- Viewport3DAutomationPeer.cs
- EtwTrackingBehaviorElement.cs
- NegatedCellConstant.cs
- TextDocumentView.cs
- TypePropertyEditor.cs
- BitmapEffectOutputConnector.cs
- ByteStack.cs
- HttpContext.cs
- InfiniteTimeSpanConverter.cs
- BrowserTree.cs
- MediaSystem.cs
- CredentialCache.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- Context.cs
- SecurityContextCookieSerializer.cs
- SmtpMail.cs
- IgnoreSectionHandler.cs
- ObjectQuery_EntitySqlExtensions.cs
- ClientCultureInfo.cs
- WebPartExportVerb.cs
- CFStream.cs
- StringArrayEditor.cs
- Internal.cs
- SettingsPropertyIsReadOnlyException.cs
- ExtendedPropertyCollection.cs
- Rect.cs
- ImageListImageEditor.cs
- ParameterCollectionEditor.cs
- ScrollContentPresenter.cs
- HtmlTextArea.cs
- WorkflowDurableInstance.cs
- SessionViewState.cs
- Vars.cs
- CodeIterationStatement.cs
- EnumerableWrapperWeakToStrong.cs
- CriticalExceptions.cs
- Matrix3D.cs
- WebConfigurationHost.cs
- SafeFindHandle.cs
- NavigateEvent.cs
- Publisher.cs