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
- DefaultValueConverter.cs
- EventMappingSettingsCollection.cs
- CollectionBuilder.cs
- DataGridViewRowsRemovedEventArgs.cs
- DataPager.cs
- Size3DValueSerializer.cs
- SystemInformation.cs
- StaticResourceExtension.cs
- FixedSOMSemanticBox.cs
- ProcessInfo.cs
- VectorAnimationUsingKeyFrames.cs
- NetworkInformationException.cs
- WebBrowserUriTypeConverter.cs
- IFormattable.cs
- DictationGrammar.cs
- Simplifier.cs
- WSHttpBindingBase.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- ConnectionPointCookie.cs
- grammarelement.cs
- ItemsControlAutomationPeer.cs
- DbProviderServices.cs
- HwndMouseInputProvider.cs
- MultipleViewProviderWrapper.cs
- CollectionViewSource.cs
- DataTablePropertyDescriptor.cs
- HeaderCollection.cs
- PathGeometry.cs
- CodeComment.cs
- CheckBoxFlatAdapter.cs
- SizeAnimationBase.cs
- WorkflowServiceNamespace.cs
- SafeRegistryKey.cs
- sqlmetadatafactory.cs
- Rect.cs
- MasterPageParser.cs
- WsdlBuildProvider.cs
- sitestring.cs
- ThreadExceptionDialog.cs
- Models.cs
- IDReferencePropertyAttribute.cs
- RectValueSerializer.cs
- DefinitionBase.cs
- ChooseAction.cs
- BinaryConverter.cs
- ImageMapEventArgs.cs
- CompoundFileDeflateTransform.cs
- SQLDateTime.cs
- ReflectPropertyDescriptor.cs
- Privilege.cs
- BitmapCacheBrush.cs
- DataGridColumnHeader.cs
- SocketInformation.cs
- _LoggingObject.cs
- ExpressionBuilderContext.cs
- TreeViewItem.cs
- SqlBuffer.cs
- COM2AboutBoxPropertyDescriptor.cs
- ExtensionDataReader.cs
- NullableBoolConverter.cs
- ApplicationSettingsBase.cs
- SamlDelegatingWriter.cs
- ContainerParaClient.cs
- CodeDirectionExpression.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- CodeRegionDirective.cs
- TCEAdapterGenerator.cs
- CharacterHit.cs
- SerializationStore.cs
- XmlILAnnotation.cs
- ISO2022Encoding.cs
- DataColumnPropertyDescriptor.cs
- TemplatedEditableDesignerRegion.cs
- SqlPersonalizationProvider.cs
- ConstraintManager.cs
- OperationParameterInfo.cs
- KeyProperty.cs
- OdbcCommand.cs
- PenThreadPool.cs
- ExpressionVisitor.cs
- HtmlEncodedRawTextWriter.cs
- BaseParser.cs
- DataBindingHandlerAttribute.cs
- MiniCustomAttributeInfo.cs
- WebBrowserUriTypeConverter.cs
- EpmAttributeNameBuilder.cs
- AdRotatorDesigner.cs
- WebRequest.cs
- VirtualDirectoryMappingCollection.cs
- FixedFindEngine.cs
- DrawingContextDrawingContextWalker.cs
- CmsInterop.cs
- AdornerPresentationContext.cs
- ClickablePoint.cs
- HostingPreferredMapPath.cs
- ISCIIEncoding.cs
- XamlGridLengthSerializer.cs
- HtmlFormParameterWriter.cs
- WebBrowserPermission.cs
- ProcessInfo.cs