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
- ListViewUpdatedEventArgs.cs
- BaseContextMenu.cs
- ReversePositionQuery.cs
- TransactionState.cs
- SrgsItemList.cs
- PromptBuilder.cs
- WebHttpDispatchOperationSelector.cs
- EmissiveMaterial.cs
- PersonalizationStateQuery.cs
- SyndicationElementExtension.cs
- unsafeIndexingFilterStream.cs
- XmlMtomWriter.cs
- CustomErrorsSection.cs
- cookiecontainer.cs
- Overlapped.cs
- X509ScopedServiceCertificateElementCollection.cs
- ButtonFieldBase.cs
- Fonts.cs
- DetailsViewUpdateEventArgs.cs
- DataListItem.cs
- NullRuntimeConfig.cs
- CryptoKeySecurity.cs
- ResourceCategoryAttribute.cs
- CompositeFontFamily.cs
- DbDataAdapter.cs
- DataTableMapping.cs
- Ipv6Element.cs
- InfiniteIntConverter.cs
- Brush.cs
- FtpWebResponse.cs
- DataView.cs
- arc.cs
- _LocalDataStore.cs
- ResourcesChangeInfo.cs
- StrokeSerializer.cs
- FastEncoderWindow.cs
- NameTable.cs
- TableDetailsCollection.cs
- File.cs
- OleDbError.cs
- LocationUpdates.cs
- ModuleBuilder.cs
- SlipBehavior.cs
- ToolStripScrollButton.cs
- TypedElement.cs
- CapabilitiesState.cs
- AudioFileOut.cs
- X509CertificateStore.cs
- BooleanAnimationBase.cs
- ObjectStateFormatter.cs
- _Connection.cs
- _AutoWebProxyScriptWrapper.cs
- invalidudtexception.cs
- mansign.cs
- XamlBrushSerializer.cs
- IOException.cs
- DbDataSourceEnumerator.cs
- Ipv6Element.cs
- COM2EnumConverter.cs
- XmlWrappingReader.cs
- MenuItemBinding.cs
- CompensatableTransactionScopeActivityDesigner.cs
- ParameterToken.cs
- SqlDataSourceConfigureSortForm.cs
- MailAddress.cs
- MouseActionValueSerializer.cs
- EntityPropertyMappingAttribute.cs
- FileDialogCustomPlace.cs
- HatchBrush.cs
- DbConnectionPoolOptions.cs
- UnsupportedPolicyOptionsException.cs
- Privilege.cs
- DSASignatureFormatter.cs
- CanExpandCollapseAllConverter.cs
- PersonalizationProviderHelper.cs
- LoginUtil.cs
- StyleReferenceConverter.cs
- SqlNodeAnnotation.cs
- VolatileEnlistmentState.cs
- TextInfo.cs
- SchemaType.cs
- DataSourceConverter.cs
- NonPrimarySelectionGlyph.cs
- ExcCanonicalXml.cs
- shaper.cs
- CorePropertiesFilter.cs
- TextBoxLine.cs
- QueryReaderSettings.cs
- DbParameterHelper.cs
- SizeConverter.cs
- Cursors.cs
- DataGridRowEventArgs.cs
- PtsCache.cs
- Control.cs
- DataList.cs
- QuaternionAnimation.cs
- PointLightBase.cs
- Internal.cs
- DetailsViewUpdateEventArgs.cs
- Debugger.cs