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
- ErasingStroke.cs
- TrackingServices.cs
- ResourceDescriptionAttribute.cs
- ClientOperation.cs
- MailMessage.cs
- SqlCacheDependencyDatabaseCollection.cs
- InputElement.cs
- MinimizableAttributeTypeConverter.cs
- TextServicesLoader.cs
- TableColumn.cs
- ToolStripProgressBar.cs
- LinearKeyFrames.cs
- FlowLayoutPanel.cs
- DefaultParameterValueAttribute.cs
- BitmapFrameEncode.cs
- PartitionedDataSource.cs
- Memoizer.cs
- FileLevelControlBuilderAttribute.cs
- RtfToXamlLexer.cs
- SimpleType.cs
- XmlSchemaComplexContentRestriction.cs
- TranslateTransform3D.cs
- FieldAccessException.cs
- XmlHierarchicalDataSourceView.cs
- XmlSerializableServices.cs
- SecUtil.cs
- GZipDecoder.cs
- WebBrowserSiteBase.cs
- ConnectionConsumerAttribute.cs
- XmlAttributeCollection.cs
- NetPeerTcpBinding.cs
- DrawingServices.cs
- WinFormsComponentEditor.cs
- DPTypeDescriptorContext.cs
- FontStretch.cs
- SerTrace.cs
- SoapEnumAttribute.cs
- BrowserTree.cs
- SvcMapFile.cs
- XmlComment.cs
- FileLogRecordStream.cs
- SmtpNtlmAuthenticationModule.cs
- AnnotationStore.cs
- QueryPageSettingsEventArgs.cs
- VisualTreeUtils.cs
- MatrixCamera.cs
- MemberInfoSerializationHolder.cs
- StringAnimationUsingKeyFrames.cs
- CommonProperties.cs
- PerformanceCountersElement.cs
- TableLayoutStyleCollection.cs
- JournalEntry.cs
- PageBuildProvider.cs
- ErrorFormatterPage.cs
- TemplateColumn.cs
- Compiler.cs
- TextContainerChangedEventArgs.cs
- DocumentGrid.cs
- ConfigurationStrings.cs
- ItemType.cs
- ClusterUtils.cs
- ToolZone.cs
- ComponentResourceKeyConverter.cs
- ObjectCloneHelper.cs
- CustomAttributeSerializer.cs
- CollectionConverter.cs
- ArraySubsetEnumerator.cs
- PropertyPushdownHelper.cs
- RegexWorker.cs
- _NetRes.cs
- MenuItemStyle.cs
- SynchronizationScope.cs
- XPathExpr.cs
- AnnotationResourceChangedEventArgs.cs
- EditorBrowsableAttribute.cs
- AtlasWeb.Designer.cs
- MonitorWrapper.cs
- HttpRawResponse.cs
- ResetableIterator.cs
- IndexerNameAttribute.cs
- PrintPageEvent.cs
- LinqDataSourceInsertEventArgs.cs
- SqlDataSourceStatusEventArgs.cs
- RangeValuePattern.cs
- FormsAuthenticationEventArgs.cs
- MetadataItemCollectionFactory.cs
- IISUnsafeMethods.cs
- FixedTextBuilder.cs
- FileDialogCustomPlace.cs
- IndexedEnumerable.cs
- CaseInsensitiveComparer.cs
- CodeDOMUtility.cs
- SoapFault.cs
- basemetadatamappingvisitor.cs
- XmlWriterTraceListener.cs
- SelectionEditingBehavior.cs
- AudienceUriMode.cs
- DataSourceHelper.cs
- Collection.cs
- StorageComplexPropertyMapping.cs