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
- ListenDesigner.cs
- RectangleF.cs
- ControlTemplate.cs
- TypeUtil.cs
- ReadWriteObjectLock.cs
- Transform.cs
- ISFTagAndGuidCache.cs
- DataGridRow.cs
- ServiceBuildProvider.cs
- Page.cs
- ColorIndependentAnimationStorage.cs
- ProfessionalColorTable.cs
- SetIndexBinder.cs
- DataGridViewRowPostPaintEventArgs.cs
- HttpBrowserCapabilitiesBase.cs
- MatcherBuilder.cs
- LineServicesCallbacks.cs
- ThemeDirectoryCompiler.cs
- DataSourceHelper.cs
- ContentOnlyMessage.cs
- Win32PrintDialog.cs
- TickBar.cs
- RegistryPermission.cs
- ZipFileInfo.cs
- BitStream.cs
- UniqueConstraint.cs
- DeviceContext.cs
- CalendarDay.cs
- UnsafeNativeMethodsPenimc.cs
- CommonRemoteMemoryBlock.cs
- xsdvalidator.cs
- TypeElement.cs
- CodeLabeledStatement.cs
- TextRunCache.cs
- Visual.cs
- RouteTable.cs
- XmlSignificantWhitespace.cs
- VirtualDirectoryMappingCollection.cs
- ValidationHelper.cs
- PixelFormat.cs
- ConstructorNeedsTagAttribute.cs
- AssemblyInfo.cs
- Point4DValueSerializer.cs
- MbpInfo.cs
- XPathChildIterator.cs
- CheckBoxField.cs
- ByteStorage.cs
- ConfigurationLocationCollection.cs
- ListViewInsertionMark.cs
- BamlLocalizationDictionary.cs
- StrongName.cs
- MessageDesigner.cs
- HttpCapabilitiesEvaluator.cs
- CellPartitioner.cs
- HierarchicalDataSourceControl.cs
- TokenizerHelper.cs
- ResourcePermissionBase.cs
- XmlDocumentType.cs
- CompletionCallbackWrapper.cs
- InvokePatternIdentifiers.cs
- CodeDefaultValueExpression.cs
- DispatcherEventArgs.cs
- OperandQuery.cs
- _NTAuthentication.cs
- CompareInfo.cs
- EventLogInformation.cs
- RoutedCommand.cs
- PagesChangedEventArgs.cs
- XmlSchemaSimpleType.cs
- CompositeControl.cs
- IdentityNotMappedException.cs
- Evaluator.cs
- File.cs
- TraceSection.cs
- WpfSharedBamlSchemaContext.cs
- LinearKeyFrames.cs
- TextBlockAutomationPeer.cs
- PagesSection.cs
- PreservationFileWriter.cs
- ObjectTypeMapping.cs
- FolderLevelBuildProvider.cs
- FormatterServices.cs
- HeaderElement.cs
- BatchStream.cs
- CalendarDay.cs
- PropertyChangingEventArgs.cs
- PointCollection.cs
- TypeDependencyAttribute.cs
- SectionInformation.cs
- HttpRuntimeSection.cs
- Item.cs
- DefaultPropertyAttribute.cs
- ParameterCollection.cs
- ContentPlaceHolder.cs
- LinkedResource.cs
- ViewBase.cs
- StructuredTypeInfo.cs
- TaskExceptionHolder.cs
- CopyAction.cs
- InsufficientMemoryException.cs