Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / LogFlushAsyncResult.cs / 1305376 / LogFlushAsyncResult.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security.Permissions; using System.Threading; using Microsoft.Win32.SafeHandles; sealed class LogFlushAsyncResult : OverlappedAsyncResult { LogRecordSequence recordSequence; ulong sequenceNumber; object boxedResultLsn; GCHandle pinnedResultLsn; internal LogFlushAsyncResult(LogRecordSequence recordSequence, AsyncCallback callback, object state) : base(callback, state) { this.recordSequence = recordSequence; } //=========================================================== // Parameters //=========================================================== internal ulong SequenceNumber { /* get { return this.sequenceNumber; } */ set { this.sequenceNumber = value; } } //============================================================ // Result //=========================================================== internal ulong ResultLsn { get { return (ulong)this.boxedResultLsn; } } internal void Start() { try { ulong resultLsn = 0; this.boxedResultLsn = (object)(resultLsn); this.pinnedResultLsn = GCHandle.Alloc(this.boxedResultLsn, GCHandleType.Pinned); Pack(this.boxedResultLsn); uint errorCode; unsafe { errorCode = UnsafeNativeMethods.FlushLogToLsnAsync( this.recordSequence.MarshalContext, ref this.sequenceNumber, this.pinnedResultLsn.AddrOfPinnedObject(), this.NativeOverlapped); } if (errorCode != Error.ERROR_IO_PENDING) { // We don't need to call Free() in a finally block, // because any exception will failfast the process Free(); this.pinnedResultLsn.Free(); if (errorCode == Error.ERROR_SUCCESS) { Complete(true, null); } else { Complete( true, UnsafeNativeMethods.FlushLogToLsnFilter(errorCode)); } } } #pragma warning suppress 56500 // We will be terminating the process with any exception in this call catch(Exception e) { // The code in the try block should not throw any exceptions. // If an exception is caught here, IO.Log may be in an unknown state. // We prefer to failfast instead of risking the possibility of log corruption. // Any client code using IO.Log must have a recovery model that can deal // with appdomain and process failures. DiagnosticUtility.InvokeFinalHandler(e); } } internal override void IOCompleted(uint errorCode) { this.pinnedResultLsn.Free(); if (errorCode == Error.ERROR_SUCCESS) { Complete(false, null); } else { Complete(false, UnsafeNativeMethods.FlushLogToLsnFilter(errorCode)); } } } } // 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
- WmlTextViewAdapter.cs
- PackageStore.cs
- ExpressionBindingCollection.cs
- ClonableStack.cs
- XmlSchemaCompilationSettings.cs
- EventArgs.cs
- TextTreeInsertElementUndoUnit.cs
- xmlglyphRunInfo.cs
- TimeSpanConverter.cs
- OperatingSystemVersionCheck.cs
- WindowsSlider.cs
- Baml2006KnownTypes.cs
- AnonymousIdentificationModule.cs
- EntityParameter.cs
- PassportIdentity.cs
- WindowsScroll.cs
- WebPartVerb.cs
- WebConfigurationManager.cs
- SqlTrackingWorkflowInstance.cs
- FlowDocumentReaderAutomationPeer.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- ConversionContext.cs
- HitTestResult.cs
- MetadataPropertyAttribute.cs
- WebPartMinimizeVerb.cs
- ValidationEventArgs.cs
- DataGridLinkButton.cs
- DataGridView.cs
- XamlTemplateSerializer.cs
- ViewStateModeByIdAttribute.cs
- BidPrivateBase.cs
- DataSourceNameHandler.cs
- XPathMultyIterator.cs
- SimpleTextLine.cs
- DbConnectionStringCommon.cs
- DataGridViewAutoSizeModeEventArgs.cs
- DataGridColumn.cs
- TextTreeObjectNode.cs
- GradientStop.cs
- StateMachineSubscription.cs
- UInt64Converter.cs
- MouseEventArgs.cs
- ClientBuildManagerCallback.cs
- MissingMethodException.cs
- ZipIOExtraFieldPaddingElement.cs
- SelectedDatesCollection.cs
- DoubleAnimation.cs
- BuildManager.cs
- PersonalizationEntry.cs
- PathSegment.cs
- ProtocolsSection.cs
- EventRouteFactory.cs
- ProcessModelInfo.cs
- XmlSchemaSimpleTypeRestriction.cs
- CodeTypeMemberCollection.cs
- AccessDataSource.cs
- CellConstantDomain.cs
- DataGridViewControlCollection.cs
- XmlILTrace.cs
- EventBuilder.cs
- _SSPISessionCache.cs
- MultipartIdentifier.cs
- UrlMappingCollection.cs
- SqlParameter.cs
- PlainXmlSerializer.cs
- SqlInternalConnection.cs
- HyperLinkField.cs
- StringArrayConverter.cs
- _NativeSSPI.cs
- FieldToken.cs
- ReadOnlyCollectionBuilder.cs
- CodeSnippetCompileUnit.cs
- PasswordBox.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- SerialPinChanges.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- Size.cs
- MessageQueueCriteria.cs
- ApplicationFileParser.cs
- WpfKnownMember.cs
- WindowsFont.cs
- MessageBox.cs
- BufferModesCollection.cs
- UnsafeNativeMethods.cs
- CqlWriter.cs
- TypeFieldSchema.cs
- Asn1IntegerConverter.cs
- RichTextBox.cs
- Perspective.cs
- DetailsViewCommandEventArgs.cs
- GridViewColumnCollectionChangedEventArgs.cs
- DecimalStorage.cs
- SystemIcons.cs
- WebContext.cs
- Columns.cs
- ProfileParameter.cs
- TemplatedAdorner.cs
- TextSpanModifier.cs
- StringFunctions.cs
- DataListCommandEventArgs.cs