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
- WebPartChrome.cs
- SafeLocalMemHandle.cs
- EventDescriptor.cs
- SelectionGlyphBase.cs
- SoapIncludeAttribute.cs
- MSAAWinEventWrap.cs
- SHA256.cs
- KeyPressEvent.cs
- DataGridViewSelectedCellCollection.cs
- ISessionStateStore.cs
- Opcode.cs
- CustomWebEventKey.cs
- DbConvert.cs
- EdmEntityTypeAttribute.cs
- RootProfilePropertySettingsCollection.cs
- HiddenFieldPageStatePersister.cs
- BindingObserver.cs
- FilterQueryOptionExpression.cs
- RequestCachingSection.cs
- TreeViewImageIndexConverter.cs
- ServiceActivationException.cs
- AdapterDictionary.cs
- DbMetaDataFactory.cs
- RegularExpressionValidator.cs
- NamedPipeHostedTransportConfiguration.cs
- TemplateComponentConnector.cs
- XmlDeclaration.cs
- CodeDelegateCreateExpression.cs
- ObservableDictionary.cs
- AgileSafeNativeMemoryHandle.cs
- TabPage.cs
- DocumentPage.cs
- SeekStoryboard.cs
- NullableDecimalAverageAggregationOperator.cs
- XslAst.cs
- OleDbRowUpdatingEvent.cs
- UdpTransportSettings.cs
- WsdlExporter.cs
- AutoResizedEvent.cs
- _NetworkingPerfCounters.cs
- Debugger.cs
- EventsTab.cs
- SqlGenericUtil.cs
- WindowInteropHelper.cs
- ParameterCollectionEditorForm.cs
- HMACSHA1.cs
- TextRenderer.cs
- DesignerForm.cs
- RoutedEvent.cs
- CustomValidator.cs
- ContentFileHelper.cs
- EventSinkHelperWriter.cs
- VoiceSynthesis.cs
- Privilege.cs
- InfoCardAsymmetricCrypto.cs
- AssociationProvider.cs
- QuotedStringWriteStateInfo.cs
- HasCopySemanticsAttribute.cs
- odbcmetadatacolumnnames.cs
- Model3DCollection.cs
- ProfileGroupSettingsCollection.cs
- WmpBitmapEncoder.cs
- ProtocolElement.cs
- CopyAttributesAction.cs
- CodeAttachEventStatement.cs
- PrivilegedConfigurationManager.cs
- SvcMapFileSerializer.cs
- ContextToken.cs
- PTManager.cs
- NetworkInterface.cs
- assemblycache.cs
- MemberExpression.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- wmiprovider.cs
- WpfGeneratedKnownProperties.cs
- Help.cs
- FontStyle.cs
- BatchWriter.cs
- PersistenceContext.cs
- IgnoreFlushAndCloseStream.cs
- ColorEditor.cs
- HashMembershipCondition.cs
- PopupControlService.cs
- FullTrustAssembly.cs
- SamlSubject.cs
- MultiPageTextView.cs
- Int32CAMarshaler.cs
- BitmapEffect.cs
- XPathDocument.cs
- WebPartConnection.cs
- fixedPageContentExtractor.cs
- FormViewRow.cs
- AppDomainProtocolHandler.cs
- EndOfStreamException.cs
- HashLookup.cs
- ModifiableIteratorCollection.cs
- Function.cs
- X509WindowsSecurityToken.cs
- ListViewGroupItemCollection.cs
- ResourceDictionary.cs