Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / LogFlushAsyncResult.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Utils.cs
- TrustManager.cs
- WindowsAuthenticationEventArgs.cs
- Highlights.cs
- BooleanStorage.cs
- UdpRetransmissionSettings.cs
- XPathDocumentBuilder.cs
- HttpCapabilitiesBase.cs
- WCFModelStrings.Designer.cs
- JumpPath.cs
- FontNamesConverter.cs
- IPipelineRuntime.cs
- GenericTypeParameterBuilder.cs
- MobileUserControlDesigner.cs
- TemplateBindingExtension.cs
- EntityClassGenerator.cs
- EntityClientCacheKey.cs
- AssertFilter.cs
- AppDomainFactory.cs
- MouseActionValueSerializer.cs
- unsafeIndexingFilterStream.cs
- TransactionTraceIdentifier.cs
- DataGridViewRowCollection.cs
- PropertyGridEditorPart.cs
- ImageSourceConverter.cs
- BookmarkCallbackWrapper.cs
- login.cs
- BitmapEffectrendercontext.cs
- WarningException.cs
- Processor.cs
- DockAndAnchorLayout.cs
- Polyline.cs
- Calendar.cs
- PropertyGrid.cs
- ExpressionContext.cs
- CryptoKeySecurity.cs
- SchemaCollectionPreprocessor.cs
- PostBackTrigger.cs
- Splitter.cs
- linebase.cs
- DbConnectionPoolCounters.cs
- WebServiceReceive.cs
- BitmapEffectInputData.cs
- PerformanceCounterLib.cs
- ListDictionaryInternal.cs
- ThrowOnMultipleAssignment.cs
- ECDiffieHellmanPublicKey.cs
- EventLogInformation.cs
- DirectoryNotFoundException.cs
- HttpWriter.cs
- CFStream.cs
- ReadOnlyCollectionBase.cs
- DataServiceStreamResponse.cs
- MailMessageEventArgs.cs
- ToolZoneDesigner.cs
- HttpHeaderCollection.cs
- FixedSOMLineRanges.cs
- VirtualPathUtility.cs
- Shape.cs
- columnmapkeybuilder.cs
- UnmanagedMarshal.cs
- VisualStateGroup.cs
- BaseTemplateBuildProvider.cs
- Dynamic.cs
- SortedSetDebugView.cs
- Site.cs
- XPathNodeList.cs
- CapiSymmetricAlgorithm.cs
- UInt64.cs
- Point3DCollectionConverter.cs
- BitmapFrame.cs
- BrowserCapabilitiesFactoryBase.cs
- WCFBuildProvider.cs
- Attributes.cs
- CustomAttributeBuilder.cs
- XmlSchemaGroupRef.cs
- CodeDirectionExpression.cs
- SQLBinary.cs
- GPRECTF.cs
- EmptyQuery.cs
- HtmlElementEventArgs.cs
- BackStopAuthenticationModule.cs
- DesignerCatalogPartChrome.cs
- DbDeleteCommandTree.cs
- DataGridViewSelectedRowCollection.cs
- ExceptionRoutedEventArgs.cs
- ForceCopyBuildProvider.cs
- ControllableStoryboardAction.cs
- AsyncPostBackTrigger.cs
- UriExt.cs
- SerializerDescriptor.cs
- FilteredAttributeCollection.cs
- HttpDebugHandler.cs
- ApplicationInterop.cs
- BasicKeyConstraint.cs
- ParsedRoute.cs
- ContextMenuStripActionList.cs
- IsolatedStorageFilePermission.cs
- HuffCodec.cs
- WebBaseEventKeyComparer.cs