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
- _RegBlobWebProxyDataBuilder.cs
- Bidi.cs
- DataGridViewSelectedColumnCollection.cs
- TextReader.cs
- Rect3D.cs
- CutCopyPasteHelper.cs
- ListBase.cs
- X509Chain.cs
- SqlTriggerContext.cs
- WorkflowServiceAttributes.cs
- Triplet.cs
- input.cs
- Activator.cs
- PaintEvent.cs
- PowerStatus.cs
- HttpCookiesSection.cs
- UIInitializationException.cs
- BamlTreeNode.cs
- GeometryCombineModeValidation.cs
- TypeDescriptorFilterService.cs
- FastEncoderWindow.cs
- LineSegment.cs
- PublisherIdentityPermission.cs
- AsyncResult.cs
- IndicFontClient.cs
- GenericIdentity.cs
- DictionaryEntry.cs
- Hash.cs
- LinqDataSourceInsertEventArgs.cs
- EmissiveMaterial.cs
- SettingsAttributes.cs
- GradientBrush.cs
- UpdateManifestForBrowserApplication.cs
- BufferedGraphics.cs
- XmlAttributeCache.cs
- TypeNameConverter.cs
- VisualStyleTypesAndProperties.cs
- HtmlPhoneCallAdapter.cs
- CustomErrorCollection.cs
- CryptoStream.cs
- ResourceProviderFactory.cs
- TypeUtils.cs
- CollectionContainer.cs
- DataGridViewRowCancelEventArgs.cs
- dbdatarecord.cs
- ExtendedPropertyDescriptor.cs
- CollectionViewSource.cs
- CodeVariableDeclarationStatement.cs
- TextRangeProviderWrapper.cs
- ParameterCollection.cs
- FtpCachePolicyElement.cs
- XmlEncodedRawTextWriter.cs
- NetTcpSecurityElement.cs
- GorillaCodec.cs
- UrlMapping.cs
- InitializerFacet.cs
- SimpleTextLine.cs
- UrlMappingCollection.cs
- DesignerLoader.cs
- RuleSettings.cs
- XPathDescendantIterator.cs
- SecurityTokenException.cs
- ProcessHostFactoryHelper.cs
- RectIndependentAnimationStorage.cs
- OdbcParameter.cs
- ListViewDataItem.cs
- GridProviderWrapper.cs
- AuthorizationRuleCollection.cs
- RowCache.cs
- UInt64.cs
- HwndAppCommandInputProvider.cs
- IOException.cs
- BackoffTimeoutHelper.cs
- ImageBrush.cs
- EventLogPermissionEntry.cs
- HttpException.cs
- HttpCapabilitiesSectionHandler.cs
- TakeOrSkipWhileQueryOperator.cs
- ConnectionPointCookie.cs
- ClientProxyGenerator.cs
- SortedList.cs
- UIElementAutomationPeer.cs
- ModifiableIteratorCollection.cs
- Models.cs
- ParenthesizePropertyNameAttribute.cs
- MethodToken.cs
- ZoneButton.cs
- StdValidatorsAndConverters.cs
- SystemColors.cs
- GridEntry.cs
- XmlSequenceWriter.cs
- IDictionary.cs
- PeerContact.cs
- WebPartDisplayModeCollection.cs
- DesignUtil.cs
- IteratorDescriptor.cs
- FileDataSourceCache.cs
- RSAOAEPKeyExchangeDeformatter.cs
- InstanceKeyCollisionException.cs
- SHA384Managed.cs