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
- SqlDataAdapter.cs
- Shape.cs
- WebPartRestoreVerb.cs
- TimeoutStream.cs
- InlineObject.cs
- Rules.cs
- Control.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- _UriTypeConverter.cs
- WebPartDisplayModeEventArgs.cs
- Transform3D.cs
- CircleHotSpot.cs
- ObjectDisposedException.cs
- SiteMapSection.cs
- InputDevice.cs
- MailMessageEventArgs.cs
- PassportIdentity.cs
- ZipIOLocalFileHeader.cs
- DesignTimeSiteMapProvider.cs
- ProxyElement.cs
- ColumnReorderedEventArgs.cs
- ToolStripComboBox.cs
- ComplexPropertyEntry.cs
- streamingZipPartStream.cs
- CoreSwitches.cs
- AppliesToBehaviorDecisionTable.cs
- ResourceReferenceExpressionConverter.cs
- AuthenticationModuleElementCollection.cs
- EventListener.cs
- PropertyGeneratedEventArgs.cs
- KoreanCalendar.cs
- XmlEnumAttribute.cs
- Certificate.cs
- StructuredProperty.cs
- CodeCatchClauseCollection.cs
- ClientCultureInfo.cs
- ContextMenu.cs
- TrackingServices.cs
- HtmlInputRadioButton.cs
- ObjectManager.cs
- SchemaObjectWriter.cs
- HtmlListAdapter.cs
- LineBreak.cs
- ObjectManager.cs
- MethodInfo.cs
- FrameDimension.cs
- AgileSafeNativeMemoryHandle.cs
- AxHost.cs
- DataListItem.cs
- EventWaitHandleSecurity.cs
- BrowserCapabilitiesFactory.cs
- HashSetDebugView.cs
- SocketElement.cs
- ContainerAction.cs
- HttpCapabilitiesSectionHandler.cs
- IIS7WorkerRequest.cs
- SymDocumentType.cs
- FunctionImportMapping.cs
- HostedAspNetEnvironment.cs
- Rect3D.cs
- JsonServiceDocumentSerializer.cs
- Attributes.cs
- TracePayload.cs
- ValidatorAttribute.cs
- ListView.cs
- SignedXml.cs
- EntityDataSourceStatementEditorForm.cs
- BamlStream.cs
- WrappingXamlSchemaContext.cs
- NavigationPropertyEmitter.cs
- ScrollEvent.cs
- XmlSchemaAppInfo.cs
- Journal.cs
- FileStream.cs
- GradientStop.cs
- AncillaryOps.cs
- TraceListener.cs
- FormCollection.cs
- ConnectionPointGlyph.cs
- prefixendpointaddressmessagefilter.cs
- BrowserCapabilitiesFactoryBase.cs
- KernelTypeValidation.cs
- XmlAggregates.cs
- PassportAuthenticationEventArgs.cs
- XmlEnumAttribute.cs
- ViewManager.cs
- HttpContext.cs
- RegisteredDisposeScript.cs
- SecurityDocument.cs
- VariantWrapper.cs
- commandenforcer.cs
- SpellerInterop.cs
- TextShapeableCharacters.cs
- HttpConfigurationSystem.cs
- RequestResponse.cs
- DataColumnMappingCollection.cs
- SymmetricKeyWrap.cs
- InputScopeManager.cs
- PersistenceProviderFactory.cs
- Separator.cs