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
- IndentedWriter.cs
- OleDbInfoMessageEvent.cs
- Transactions.cs
- SHA384.cs
- WebBrowserPermission.cs
- ArraySegment.cs
- StaticFileHandler.cs
- SqlParameter.cs
- ResourceCollectionInfo.cs
- NavigationCommands.cs
- sqlinternaltransaction.cs
- SqlSelectStatement.cs
- XsdBuildProvider.cs
- MimeTypeMapper.cs
- SQLBinary.cs
- TokenizerHelper.cs
- SHA1.cs
- ItemMap.cs
- AdPostCacheSubstitution.cs
- UserPreferenceChangedEventArgs.cs
- ProfessionalColors.cs
- ModelTreeEnumerator.cs
- TabPanel.cs
- AmbiguousMatchException.cs
- FrameworkElementFactoryMarkupObject.cs
- ComponentCommands.cs
- AlgoModule.cs
- WebService.cs
- WarningException.cs
- CompilationSection.cs
- SystemThemeKey.cs
- EntityDataSourceSelectingEventArgs.cs
- ReflectionUtil.cs
- SecurityChannelListener.cs
- ProviderMetadataCachedInformation.cs
- NullReferenceException.cs
- OdbcUtils.cs
- TabControlCancelEvent.cs
- FlowLayoutPanel.cs
- ConnectionOrientedTransportChannelFactory.cs
- BlockingCollection.cs
- DataGridViewRowPostPaintEventArgs.cs
- XPathNodeIterator.cs
- ContainerFilterService.cs
- ScrollBarAutomationPeer.cs
- HandlerBase.cs
- X509ChainElement.cs
- SqlDataSourceFilteringEventArgs.cs
- XmlAnyElementAttributes.cs
- WebPartCatalogCloseVerb.cs
- TypeValidationEventArgs.cs
- RecognizedAudio.cs
- QueryParameter.cs
- DelegateTypeInfo.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ProfileManager.cs
- InputBuffer.cs
- ArrayConverter.cs
- Win32SafeHandles.cs
- RenderDataDrawingContext.cs
- SimpleExpression.cs
- PeerNearMe.cs
- DataBoundControl.cs
- RelativeSource.cs
- DefaultHttpHandler.cs
- ListViewCancelEventArgs.cs
- filewebresponse.cs
- DataGridViewLinkCell.cs
- HitTestResult.cs
- COMException.cs
- PropertyNames.cs
- OdbcConnection.cs
- StylusLogic.cs
- ScriptMethodAttribute.cs
- ListDictionary.cs
- TreeView.cs
- Sentence.cs
- DbConnectionPool.cs
- Memoizer.cs
- DataColumnCollection.cs
- ComponentChangedEvent.cs
- Manipulation.cs
- BufferModesCollection.cs
- WindowsScrollBar.cs
- StylusPlugInCollection.cs
- GiveFeedbackEvent.cs
- EdmProperty.cs
- DataServiceBuildProvider.cs
- HttpModule.cs
- DispatcherEventArgs.cs
- HScrollProperties.cs
- wgx_render.cs
- SqlFlattener.cs
- CompatibleIComparer.cs
- ComponentEditorPage.cs
- DataBoundControlActionList.cs
- DataGridViewRow.cs
- COMException.cs
- RegularExpressionValidator.cs
- CheckBoxRenderer.cs