Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / LogReservationCollection.cs / 1 / LogReservationCollection.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { using System; using System.IO.Log; // NOTE: The reservations in the collection do not account for // header sizes, out of necessity. The reservations made // with the record sequence *do* account for header sizes. // // In order to maintain sanity, the record sequence only // deals with reservations that include the header // size. i.e., if it goes into CLFS, it has the header size // appended to it. // // So that means: If we receive a size from the collection, // add the header size to it before returning it. If we // receive a size from our code, subtract the header size // before giving it to the collection. // // Keep this straight, or else. // sealed class LogReservationCollection : ReservationCollection { LogRecordSequence recordSequence; internal LogReservationCollection(LogRecordSequence sequence) { this.recordSequence = sequence; } internal LogRecordSequence RecordSequence { get { return this.recordSequence; } } internal long GetMatchingReservation(long size) { // Reservation coming from CLFS, subtract record header // size. // size -= LogLogRecordHeader.Size; size = GetBestMatchingReservation(size); if (size == -1) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ReservationNotFound()); // Reservation coming from the collection, add record // header size. // size += LogLogRecordHeader.Size; return size; } internal void InternalAddReservation(long size) { // Reservation coming from CLFS, remove record header // size. // size -= LogLogRecordHeader.Size; ReservationMade(size); } protected override void MakeReservation(long size) { if (size < 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("size")); // Reservation coming from collection, add record header // size. // size += LogLogRecordHeader.Size; long aligned; UnsafeNativeMethods.AlignReservedLogSingle( this.recordSequence.MarshalContext, size, out aligned); UnsafeNativeMethods.AllocReservedLog( this.recordSequence.MarshalContext, 1, ref aligned); } protected override void FreeReservation(long size) { if (size < 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("size")); lock(this.recordSequence.LogStore.SyncRoot) { SafeMarshalContext context = this.recordSequence.InternalMarshalContext ; if(context == null || context.IsInvalid) { return; } // Reservation coming from collection, add record header // size. // size += LogLogRecordHeader.Size; long aligned; UnsafeNativeMethods.AlignReservedLogSingle( context, size, out aligned); // Adjustment must be negative, otherwise it's considered // a "set". (Yuck.) // aligned = -aligned; UnsafeNativeMethods.FreeReservedLog( context, 1, ref aligned); } } } } // 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
- EditableTreeList.cs
- Thickness.cs
- RenderDataDrawingContext.cs
- dataobject.cs
- StringAnimationBase.cs
- PinnedBufferMemoryStream.cs
- TableStyle.cs
- TabControlAutomationPeer.cs
- OdbcError.cs
- EntityWrapper.cs
- DrawingContext.cs
- ApplyHostConfigurationBehavior.cs
- StrokeNodeOperations2.cs
- DelayedRegex.cs
- SqlPersonalizationProvider.cs
- AxParameterData.cs
- ArraySegment.cs
- Imaging.cs
- TextElementEnumerator.cs
- TextDecorationCollectionConverter.cs
- SerializerProvider.cs
- GlyphTypeface.cs
- UInt16Storage.cs
- DefaultProfileManager.cs
- NativeMethods.cs
- SqlNamer.cs
- ActivitySurrogate.cs
- HandlerBase.cs
- HtmlSelect.cs
- TableLayoutPanelCodeDomSerializer.cs
- DataViewManager.cs
- ImageField.cs
- SessionIDManager.cs
- SqlFacetAttribute.cs
- TextCompositionEventArgs.cs
- PropertyChangeTracker.cs
- DateTimeUtil.cs
- TemplatedAdorner.cs
- ListParagraph.cs
- DefaultValueTypeConverter.cs
- WebConvert.cs
- ApplyImportsAction.cs
- ISFTagAndGuidCache.cs
- Faults.cs
- HuffmanTree.cs
- Wizard.cs
- EmbeddedMailObject.cs
- CodeSnippetCompileUnit.cs
- EntityDataSourceUtil.cs
- ExceptionValidationRule.cs
- CancellationTokenRegistration.cs
- TypefaceMap.cs
- CodeCommentStatement.cs
- GroupLabel.cs
- JsonUriDataContract.cs
- WebPartExportVerb.cs
- CacheVirtualItemsEvent.cs
- SqlCacheDependencyDatabaseCollection.cs
- MainMenu.cs
- ObjectKeyFrameCollection.cs
- QueryResponse.cs
- DesignerAutoFormatStyle.cs
- WebPartConnectionsConfigureVerb.cs
- ProgressBar.cs
- SecurityManager.cs
- XmlExtensionFunction.cs
- IEnumerable.cs
- RIPEMD160Managed.cs
- TreeViewHitTestInfo.cs
- VisualTreeHelper.cs
- EventLog.cs
- CqlQuery.cs
- SqlLiftIndependentRowExpressions.cs
- While.cs
- MethodRental.cs
- CultureInfo.cs
- SiteMapNode.cs
- regiisutil.cs
- OrderedDictionaryStateHelper.cs
- StreamBodyWriter.cs
- DataGridViewSelectedColumnCollection.cs
- DataGridViewAccessibleObject.cs
- BufferModeSettings.cs
- XComponentModel.cs
- JournalEntryStack.cs
- ValidationRuleCollection.cs
- MissingFieldException.cs
- StringCollection.cs
- DbConnectionPoolIdentity.cs
- ToolStripDropDownClosedEventArgs.cs
- XmlSerializerSection.cs
- localization.cs
- RelationalExpressions.cs
- StylusTip.cs
- SharedPersonalizationStateInfo.cs
- SequentialOutput.cs
- StrongNamePublicKeyBlob.cs
- SchemaImporter.cs
- MatrixValueSerializer.cs
- WebResourceAttribute.cs