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
- UiaCoreApi.cs
- SubtreeProcessor.cs
- WebException.cs
- TemplateContainer.cs
- DateTimeFormat.cs
- ClientRuntimeConfig.cs
- SystemIPAddressInformation.cs
- ProvideValueServiceProvider.cs
- TextSerializer.cs
- WindowsGraphicsCacheManager.cs
- DesignerResources.cs
- ListViewContainer.cs
- BitmapEffectDrawingContextState.cs
- ReadOnlyDictionary.cs
- PictureBoxDesigner.cs
- Win32Exception.cs
- ReadOnlyHierarchicalDataSource.cs
- Transform.cs
- documentsequencetextpointer.cs
- DnsPermission.cs
- RightsManagementEncryptionTransform.cs
- OutputCacheSettingsSection.cs
- Comparer.cs
- BlockCollection.cs
- NativeRightsManagementAPIsStructures.cs
- RichTextBox.cs
- AlignmentYValidation.cs
- BitmapScalingModeValidation.cs
- StrokeNodeOperations2.cs
- HttpModuleCollection.cs
- XmlSubtreeReader.cs
- NumericUpDown.cs
- CodePrimitiveExpression.cs
- SqlConnectionPoolProviderInfo.cs
- WebPartEventArgs.cs
- NotifyInputEventArgs.cs
- WorkflowViewElement.cs
- ScrollBar.cs
- IntegrationExceptionEventArgs.cs
- EncryptedType.cs
- HostProtectionException.cs
- DispatchChannelSink.cs
- Visual.cs
- ExeContext.cs
- QilReference.cs
- HashHelper.cs
- MDIControlStrip.cs
- WizardPanel.cs
- WebPartEditVerb.cs
- CircleHotSpot.cs
- MethodCallTranslator.cs
- TextServicesCompartmentEventSink.cs
- ValidationEventArgs.cs
- ScriptManagerProxy.cs
- GB18030Encoding.cs
- SafeThreadHandle.cs
- PrintingPermission.cs
- FacetChecker.cs
- ToolStripPanelCell.cs
- AppDomainEvidenceFactory.cs
- ContentElementCollection.cs
- FixedBufferAttribute.cs
- SpnEndpointIdentity.cs
- MonthChangedEventArgs.cs
- AttachmentCollection.cs
- PageEventArgs.cs
- ApplicationFileParser.cs
- ArgumentException.cs
- ScriptRegistrationManager.cs
- XmlAttributes.cs
- Journaling.cs
- NegatedCellConstant.cs
- DataShape.cs
- FileDialogCustomPlace.cs
- AsymmetricKeyExchangeDeformatter.cs
- SQLDouble.cs
- BaseConfigurationRecord.cs
- ValidationEventArgs.cs
- TextEffect.cs
- DataGridViewCellValueEventArgs.cs
- DataFormats.cs
- SamlConstants.cs
- BuildDependencySet.cs
- PbrsForward.cs
- TemplateBamlTreeBuilder.cs
- DateTimeOffsetConverter.cs
- GridViewRowEventArgs.cs
- HwndSubclass.cs
- CompModSwitches.cs
- SafeFindHandle.cs
- DataTableClearEvent.cs
- NavigateEvent.cs
- DirectoryObjectSecurity.cs
- XmlArrayItemAttribute.cs
- ThreadStateException.cs
- SamlAttribute.cs
- WsatTransactionHeader.cs
- SchemaTableOptionalColumn.cs
- HttpConfigurationSystem.cs
- BoundColumn.cs