Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / AppendHelper.cs / 1305376 / AppendHelper.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace System.IO.Log { class AppendHelper : IDisposable { SequenceNumber prev; SequenceNumber next; FileLogRecordHeader header; UnmanagedBlob[] blobs; GCHandle[] handles; public AppendHelper(IList> data, SequenceNumber prev, SequenceNumber next, bool restartArea) { this.prev = prev; this.next = next; this.header = new FileLogRecordHeader(null); this.header.IsRestartArea = restartArea; this.header.PreviousLsn = prev; this.header.NextUndoLsn = next; this.blobs = new UnmanagedBlob[data.Count + 1]; this.handles = new GCHandle[data.Count + 1]; try { this.handles[0] = GCHandle.Alloc(header.Bits, GCHandleType.Pinned); this.blobs[0].cbSize = (uint)FileLogRecordHeader.Size; this.blobs[0].pBlobData = Marshal.UnsafeAddrOfPinnedArrayElement(header.Bits, 0); for (int i = 0; i < data.Count; i++) { handles[i + 1] = GCHandle.Alloc(data[i].Array, GCHandleType.Pinned); blobs[i + 1].cbSize = (uint)data[i].Count; blobs[i + 1].pBlobData = Marshal.UnsafeAddrOfPinnedArrayElement(data[i].Array, data[i].Offset); } } catch { Dispose(); throw; } } public UnmanagedBlob[] Blobs { get { return this.blobs; } } // Caller should always call Dispose. Finalizer not implemented. public void Dispose() { try { lock(this) { for (int i = 0; i < handles.Length; i++) { if (handles[i].IsAllocated) handles[i].Free(); } } } catch(InvalidOperationException exception) { // This indicates something is broken in IO.Log's memory management, // so it's not safe to continue executing DiagnosticUtility.InvokeFinalHandler(exception); } } } } // 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
- DebugView.cs
- QueryTask.cs
- IntSecurity.cs
- HostingEnvironmentSection.cs
- Normalization.cs
- ModuleBuilder.cs
- _NestedSingleAsyncResult.cs
- ManagementEventWatcher.cs
- Cell.cs
- EvidenceTypeDescriptor.cs
- DescendentsWalkerBase.cs
- DependencyProperty.cs
- Track.cs
- XmlEncApr2001.cs
- FileLevelControlBuilderAttribute.cs
- OleDbSchemaGuid.cs
- Help.cs
- ByteKeyFrameCollection.cs
- LogEntrySerializationException.cs
- ListViewDataItem.cs
- GridViewDeletedEventArgs.cs
- PageCatalogPart.cs
- XmlAttributeProperties.cs
- EnlistmentTraceIdentifier.cs
- NetworkCredential.cs
- RoleGroupCollection.cs
- SizeAnimationBase.cs
- Tablet.cs
- DeclarativeExpressionConditionDeclaration.cs
- ClientBuildManager.cs
- AsnEncodedData.cs
- DataColumn.cs
- XmlAttributeAttribute.cs
- Empty.cs
- Metafile.cs
- DynamicValueConverter.cs
- MetadataItemSerializer.cs
- ContentValidator.cs
- ImageAttributes.cs
- WindowsGraphics2.cs
- ListChunk.cs
- _NtlmClient.cs
- DataBoundControlAdapter.cs
- HtmlInputControl.cs
- HttpCookieCollection.cs
- GiveFeedbackEvent.cs
- NavigationProperty.cs
- DeflateStreamAsyncResult.cs
- control.ime.cs
- XmlQueryType.cs
- SqlClientPermission.cs
- InkPresenterAutomationPeer.cs
- BezierSegment.cs
- _SslStream.cs
- CompositeKey.cs
- CreateInstanceBinder.cs
- ColumnBinding.cs
- ChangeInterceptorAttribute.cs
- ContentFilePart.cs
- GPPOINT.cs
- TextTreeDeleteContentUndoUnit.cs
- OleDbPermission.cs
- NCryptNative.cs
- TrackingExtract.cs
- InternalControlCollection.cs
- DbConnectionStringCommon.cs
- ComponentEditorPage.cs
- RenderData.cs
- RuntimeComponentFilter.cs
- ConvertEvent.cs
- DesignerTransactionCloseEvent.cs
- SiteMapProvider.cs
- SchemaNamespaceManager.cs
- SimpleWorkerRequest.cs
- TargetFrameworkAttribute.cs
- ViewManager.cs
- FunctionCommandText.cs
- RootProfilePropertySettingsCollection.cs
- SettingsSection.cs
- QueryStringParameter.cs
- SourceItem.cs
- WorkflowOwnershipException.cs
- AspNetPartialTrustHelpers.cs
- TextSpan.cs
- LastQueryOperator.cs
- FontCollection.cs
- MimeFormatExtensions.cs
- ListControlConvertEventArgs.cs
- MouseActionValueSerializer.cs
- RectIndependentAnimationStorage.cs
- PaintEvent.cs
- ArithmeticLiteral.cs
- FixedSOMContainer.cs
- HttpDictionary.cs
- MetadataArtifactLoaderResource.cs
- XamlPointCollectionSerializer.cs
- NamedPipeActivation.cs
- TypeToken.cs
- DataGridGeneralPage.cs
- FrugalList.cs