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
- ApplicationDirectoryMembershipCondition.cs
- PointCollection.cs
- BrushMappingModeValidation.cs
- LoadWorkflowAsyncResult.cs
- SignatureHelper.cs
- DataTable.cs
- unsafenativemethodstextservices.cs
- DesignTimeTemplateParser.cs
- TextEditorDragDrop.cs
- SmiContext.cs
- EditorResources.cs
- Encoding.cs
- PhonemeEventArgs.cs
- NewItemsContextMenuStrip.cs
- ConfigurationErrorsException.cs
- DbDataReader.cs
- TabControlEvent.cs
- DataGridViewDataErrorEventArgs.cs
- FrameworkContextData.cs
- UnsafeNativeMethods.cs
- SmiXetterAccessMap.cs
- ActivityCodeDomSerializationManager.cs
- SqlServices.cs
- KeyInfo.cs
- MatrixUtil.cs
- ConfigurationSectionCollection.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- SQLInt64.cs
- WebPartAddingEventArgs.cs
- CodeVariableReferenceExpression.cs
- Button.cs
- EmptyEnumerator.cs
- ReaderContextStackData.cs
- ModuleBuilderData.cs
- SrgsRuleRef.cs
- ProfileServiceManager.cs
- SignedXml.cs
- Imaging.cs
- WebServiceParameterData.cs
- XmlTextReaderImpl.cs
- UrlAuthFailedErrorFormatter.cs
- ResourceAttributes.cs
- ArgumentNullException.cs
- DataKey.cs
- RemoteWebConfigurationHostStream.cs
- FtpWebResponse.cs
- SizeChangedInfo.cs
- TypeForwardedFromAttribute.cs
- OracleString.cs
- DataGridViewCellCollection.cs
- DescendantQuery.cs
- TargetParameterCountException.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- FixedSchema.cs
- XPathNavigatorKeyComparer.cs
- FileDialogCustomPlacesCollection.cs
- RangeBase.cs
- LinkArea.cs
- TdsParser.cs
- InputLanguageCollection.cs
- SystemPens.cs
- ExceptionNotification.cs
- VerificationAttribute.cs
- ConversionContext.cs
- oledbmetadatacollectionnames.cs
- TextRangeBase.cs
- WithParamAction.cs
- CodeSubDirectoriesCollection.cs
- HtmlControlAdapter.cs
- newinstructionaction.cs
- SHA256.cs
- Repeater.cs
- XmlNavigatorFilter.cs
- TempFiles.cs
- XmlWrappingWriter.cs
- SqlDataSource.cs
- InvalidContentTypeException.cs
- HyperLinkField.cs
- LineBreak.cs
- ConfigXmlReader.cs
- DeferredReference.cs
- ClientBase.cs
- WebPartTransformerCollection.cs
- LightweightCodeGenerator.cs
- linebase.cs
- COM2IDispatchConverter.cs
- PaperSource.cs
- ToolStripContainer.cs
- CookieProtection.cs
- BitVector32.cs
- WindowProviderWrapper.cs
- DispatcherTimer.cs
- EntityDataSourceDesigner.cs
- TemplateBuilder.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- LinkedResource.cs
- CodeMemberProperty.cs
- Boolean.cs
- ImageSourceConverter.cs
- DataGridViewCellValidatingEventArgs.cs