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
- DataContractSerializerOperationFormatter.cs
- BufferedWebEventProvider.cs
- TextRangeAdaptor.cs
- dtdvalidator.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SmtpNtlmAuthenticationModule.cs
- XmlProcessingInstruction.cs
- Attachment.cs
- ApplicationFileParser.cs
- ImageAnimator.cs
- InfoCardSymmetricCrypto.cs
- UnsafeNetInfoNativeMethods.cs
- Header.cs
- TraceInternal.cs
- ConfigurationValidatorBase.cs
- Int32Rect.cs
- XmlArrayItemAttribute.cs
- MailWriter.cs
- UpdatePanel.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- MeshGeometry3D.cs
- MimeMultiPart.cs
- EditorPart.cs
- GiveFeedbackEvent.cs
- ResourceManager.cs
- EmbeddedMailObjectsCollection.cs
- NetTcpSecurityElement.cs
- WhereQueryOperator.cs
- WSFederationHttpSecurityElement.cs
- CodeDefaultValueExpression.cs
- AsyncOperationManager.cs
- PersistenceTypeAttribute.cs
- Converter.cs
- CatalogPartChrome.cs
- TransactionChannelFaultConverter.cs
- Imaging.cs
- LocalizableResourceBuilder.cs
- OracleDataReader.cs
- XmlSchemaIdentityConstraint.cs
- DataGridViewTopLeftHeaderCell.cs
- Utils.cs
- ObjectCloneHelper.cs
- SizeAnimationClockResource.cs
- TraceXPathNavigator.cs
- Native.cs
- MissingMemberException.cs
- HostedBindingBehavior.cs
- TreeViewTemplateSelector.cs
- CorrelationKey.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- SeekStoryboard.cs
- MetadataArtifactLoaderCompositeFile.cs
- BlurEffect.cs
- TypeNameParser.cs
- DiscoveryVersion.cs
- DesignerView.cs
- HtmlAnchor.cs
- TimeSpan.cs
- ListBoxAutomationPeer.cs
- ViewPort3D.cs
- BoolExpressionVisitors.cs
- FreeFormDragDropManager.cs
- ZoneMembershipCondition.cs
- Cursors.cs
- WebPartAddingEventArgs.cs
- DbDataAdapter.cs
- ErrorFormatter.cs
- DBDataPermission.cs
- RegionInfo.cs
- DoubleAnimationClockResource.cs
- PriorityBinding.cs
- InvariantComparer.cs
- XmlWrappingReader.cs
- CompoundFileDeflateTransform.cs
- SwitchAttribute.cs
- Graph.cs
- ButtonColumn.cs
- MgmtConfigurationRecord.cs
- BaseTemplatedMobileComponentEditor.cs
- DataGridTemplateColumn.cs
- Rijndael.cs
- ListViewGroupItemCollection.cs
- Unit.cs
- Label.cs
- StyleXamlParser.cs
- __Filters.cs
- altserialization.cs
- DataGridCommandEventArgs.cs
- SoapObjectInfo.cs
- PanelDesigner.cs
- WinEventQueueItem.cs
- HMACSHA1.cs
- FileReservationCollection.cs
- MLangCodePageEncoding.cs
- TransportListener.cs
- Rect.cs
- ContentPlaceHolder.cs
- SecurityKeyUsage.cs
- PictureBoxDesigner.cs
- TableCell.cs