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
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- COAUTHINFO.cs
- BaseValidator.cs
- PerfService.cs
- InvalidComObjectException.cs
- TrustManagerPromptUI.cs
- SimpleColumnProvider.cs
- HttpFileCollection.cs
- SchemaInfo.cs
- HttpSysSettings.cs
- NameTable.cs
- XmlSerializationGeneratedCode.cs
- DesignerRegion.cs
- SystemPens.cs
- ProgressBar.cs
- DecimalAnimationBase.cs
- TabRenderer.cs
- CodeMemberField.cs
- XamlStyleSerializer.cs
- QueryCacheKey.cs
- ServiceBehaviorAttribute.cs
- SizeFConverter.cs
- DiscoveryDocumentReference.cs
- CalculatedColumn.cs
- AssociationTypeEmitter.cs
- NumericUpDownAcceleration.cs
- FunctionMappingTranslator.cs
- PropertyCollection.cs
- MetaChildrenColumn.cs
- SimpleWorkerRequest.cs
- _NegoStream.cs
- ContextStack.cs
- HttpCapabilitiesEvaluator.cs
- IDReferencePropertyAttribute.cs
- SafeMemoryMappedViewHandle.cs
- SynchronousChannelMergeEnumerator.cs
- BitmapPalettes.cs
- CachedFontFamily.cs
- CachedRequestParams.cs
- AppSettingsExpressionEditor.cs
- PlainXmlSerializer.cs
- DesignerForm.cs
- MulticastOption.cs
- FamilyMap.cs
- FileRecordSequenceHelper.cs
- BigIntegerStorage.cs
- ToolBarButtonDesigner.cs
- SynchronizedRandom.cs
- Keyboard.cs
- OSFeature.cs
- CreateUserWizardAutoFormat.cs
- GridItem.cs
- CustomErrorsSectionWrapper.cs
- ConfigXmlText.cs
- ValidatorCompatibilityHelper.cs
- Baml2006ReaderFrame.cs
- InputScope.cs
- TypedElement.cs
- ColumnTypeConverter.cs
- ConfigXmlText.cs
- ImageList.cs
- BaseCodeDomTreeGenerator.cs
- HMACMD5.cs
- sqlcontext.cs
- SystemWebSectionGroup.cs
- __TransparentProxy.cs
- RepeaterItemCollection.cs
- DataGridViewDataConnection.cs
- BooleanExpr.cs
- QuaternionIndependentAnimationStorage.cs
- OletxResourceManager.cs
- ProgressChangedEventArgs.cs
- FixUp.cs
- BaseTreeIterator.cs
- DesignTimeTemplateParser.cs
- ChangeProcessor.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ProxyAttribute.cs
- RenderTargetBitmap.cs
- FontInfo.cs
- ScriptManagerProxy.cs
- Ray3DHitTestResult.cs
- InvalidOleVariantTypeException.cs
- ObjectDataSourceFilteringEventArgs.cs
- UserControlFileEditor.cs
- SizeAnimationBase.cs
- NamespaceDecl.cs
- ApplicationServiceManager.cs
- Point4D.cs
- ThreadLocal.cs
- TextTreeTextElementNode.cs
- NativeMethods.cs
- BooleanFunctions.cs
- SpeakCompletedEventArgs.cs
- PropertyBuilder.cs
- AssociationType.cs
- Scene3D.cs
- PersonalizationStateInfo.cs
- ReflectEventDescriptor.cs
- CodeTypeDelegate.cs