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
- safex509handles.cs
- Form.cs
- AssemblyBuilder.cs
- MDIControlStrip.cs
- DBNull.cs
- Documentation.cs
- ActivationServices.cs
- ProxyBuilder.cs
- Quad.cs
- GridToolTip.cs
- SqlCacheDependencyDatabaseCollection.cs
- ObjectDataSourceMethodEventArgs.cs
- CustomSignedXml.cs
- StructuredType.cs
- XomlCompilerParameters.cs
- MethodCallTranslator.cs
- TextTrailingCharacterEllipsis.cs
- CodePropertyReferenceExpression.cs
- SkewTransform.cs
- Triangle.cs
- UIntPtr.cs
- EntityDataSourceDesigner.cs
- TrackingParameters.cs
- InternalMappingException.cs
- ToolboxItem.cs
- TemplateKeyConverter.cs
- ClonableStack.cs
- IPipelineRuntime.cs
- TemplatePartAttribute.cs
- Opcode.cs
- Win32SafeHandles.cs
- DLinqAssociationProvider.cs
- ProfilePropertyMetadata.cs
- ArrayWithOffset.cs
- SamlEvidence.cs
- DrawingBrush.cs
- VBIdentifierName.cs
- DtcInterfaces.cs
- ADMembershipProvider.cs
- Win32.cs
- BitmapEffectState.cs
- smtppermission.cs
- LinearGradientBrush.cs
- PageStatePersister.cs
- Constants.cs
- OperatorExpressions.cs
- JsonFormatReaderGenerator.cs
- FontUnitConverter.cs
- FilterQuery.cs
- LocalizableAttribute.cs
- AlphabeticalEnumConverter.cs
- SpellCheck.cs
- DateTime.cs
- TileBrush.cs
- SettingsProviderCollection.cs
- ErrorHandler.cs
- TreeViewItemAutomationPeer.cs
- Point3D.cs
- DataGridViewCellEventArgs.cs
- SplashScreenNativeMethods.cs
- PasswordBox.cs
- NavigationFailedEventArgs.cs
- TemplatePropertyEntry.cs
- StyleSheetComponentEditor.cs
- RightsManagementEncryptedStream.cs
- DataChangedEventManager.cs
- DtdParser.cs
- path.cs
- BasePropertyDescriptor.cs
- PathGradientBrush.cs
- VectorAnimationUsingKeyFrames.cs
- HitTestWithGeometryDrawingContextWalker.cs
- EventArgs.cs
- EventLogTraceListener.cs
- TabletCollection.cs
- RectAnimationUsingKeyFrames.cs
- XsdDuration.cs
- CalendarAutomationPeer.cs
- XmlSignatureManifest.cs
- TextTreeRootTextBlock.cs
- ImageListStreamer.cs
- EmbeddedMailObject.cs
- GroupStyle.cs
- RegexCompilationInfo.cs
- EntitySqlException.cs
- XmlDictionaryReaderQuotas.cs
- ConfigDefinitionUpdates.cs
- ChannelProtectionRequirements.cs
- QueryContinueDragEvent.cs
- Internal.cs
- TraceHandler.cs
- ValidateNames.cs
- PositiveTimeSpanValidatorAttribute.cs
- EditingScope.cs
- CodeGenerator.cs
- StructuredTypeEmitter.cs
- ScrollItemProviderWrapper.cs
- BroadcastEventHelper.cs
- StatusStrip.cs
- EtwTrace.cs