Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / LogReservationCollection.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExceptionHandlersDesigner.cs
- IconBitmapDecoder.cs
- OdbcPermission.cs
- NullableDecimalSumAggregationOperator.cs
- MemoryMappedViewAccessor.cs
- TagPrefixAttribute.cs
- APCustomTypeDescriptor.cs
- RelationshipEnd.cs
- MessageQueue.cs
- SingleSelectRootGridEntry.cs
- ExpressionEditorSheet.cs
- ProfileProvider.cs
- ViewPort3D.cs
- ZipIOLocalFileBlock.cs
- ResourceKey.cs
- CursorEditor.cs
- Form.cs
- ScopelessEnumAttribute.cs
- DataContractSet.cs
- PropertyNames.cs
- UpdatePanel.cs
- VisualStyleInformation.cs
- _ChunkParse.cs
- DrawingAttributeSerializer.cs
- WebPartCloseVerb.cs
- Queue.cs
- TabPage.cs
- CollectionType.cs
- StandardCommands.cs
- RegistryKey.cs
- ToolStripContentPanelDesigner.cs
- ListControlConvertEventArgs.cs
- PropertyEntry.cs
- TextServicesProperty.cs
- FormsAuthenticationModule.cs
- KeyTimeConverter.cs
- XmlDataDocument.cs
- PeerTransportSecuritySettings.cs
- mactripleDES.cs
- ToolboxDataAttribute.cs
- UnsafeNativeMethods.cs
- WebBrowserBase.cs
- XmlWriterSettings.cs
- TextElementEnumerator.cs
- OutputBuffer.cs
- RepeatBehavior.cs
- QilDataSource.cs
- Types.cs
- CatchDesigner.xaml.cs
- XmlException.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ThemeableAttribute.cs
- AppSettingsReader.cs
- Pair.cs
- BounceEase.cs
- PrincipalPermission.cs
- VirtualDirectoryMapping.cs
- IItemContainerGenerator.cs
- ImpersonationContext.cs
- ResourceAttributes.cs
- MessageSecurityVersionConverter.cs
- CombinedHttpChannel.cs
- MexBindingElement.cs
- OrthographicCamera.cs
- ILGenerator.cs
- ProfileSettings.cs
- XmlMemberMapping.cs
- NativeMethods.cs
- Pair.cs
- ConsoleCancelEventArgs.cs
- RegisteredHiddenField.cs
- RelationshipDetailsCollection.cs
- XhtmlTextWriter.cs
- CustomAttributeBuilder.cs
- ServiceBuildProvider.cs
- FuncCompletionCallbackWrapper.cs
- Application.cs
- BevelBitmapEffect.cs
- BasePropertyDescriptor.cs
- SByteConverter.cs
- SafeNativeMethods.cs
- ImageDrawing.cs
- StoragePropertyMapping.cs
- ServiceDesigner.xaml.cs
- ChannelManager.cs
- FixedLineResult.cs
- OverlappedAsyncResult.cs
- SvcMapFileSerializer.cs
- DynamicDataResources.Designer.cs
- InvariantComparer.cs
- EtwTrace.cs
- DefaultTextStore.cs
- ISCIIEncoding.cs
- TreeNodeBindingCollection.cs
- TableLayoutStyleCollection.cs
- WebPartChrome.cs
- AlternateView.cs
- PositiveTimeSpanValidatorAttribute.cs
- FontNamesConverter.cs
- OneOfConst.cs