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
- MouseEventArgs.cs
- HtmlContainerControl.cs
- MediaElement.cs
- DBCommandBuilder.cs
- UndirectedGraph.cs
- Substitution.cs
- CroppedBitmap.cs
- ContextMenuService.cs
- LinqMaximalSubtreeNominator.cs
- Tablet.cs
- ButtonChrome.cs
- sqlcontext.cs
- StrongName.cs
- GlobalDataBindingHandler.cs
- FormViewDeleteEventArgs.cs
- FontFamilyIdentifier.cs
- StatusBarDesigner.cs
- baseshape.cs
- Delegate.cs
- FixedSOMTableRow.cs
- StyleCollection.cs
- DataServiceHost.cs
- AnimatedTypeHelpers.cs
- Variable.cs
- VerticalAlignConverter.cs
- WebPartManager.cs
- TabControlEvent.cs
- AuthenticationSection.cs
- ProfileGroupSettingsCollection.cs
- SafeRightsManagementEnvironmentHandle.cs
- SizeF.cs
- HostProtectionPermission.cs
- PartitionedStreamMerger.cs
- CacheMemory.cs
- XmlSchemaIdentityConstraint.cs
- DynamicDataExtensions.cs
- IdnElement.cs
- AppSettingsExpressionBuilder.cs
- PolicyChain.cs
- UIAgentMonitor.cs
- SHA384.cs
- StringToken.cs
- SharedConnectionInfo.cs
- XsltOutput.cs
- ThicknessKeyFrameCollection.cs
- IdentityHolder.cs
- KeyBinding.cs
- BamlResourceDeserializer.cs
- StringUtil.cs
- DataGridViewRowCollection.cs
- BindStream.cs
- MappingMetadataHelper.cs
- ObjectDisposedException.cs
- Delay.cs
- Module.cs
- DbConnectionFactory.cs
- DocumentApplicationJournalEntryEventArgs.cs
- UInt32Storage.cs
- BaseParser.cs
- ColumnMap.cs
- HttpPostedFile.cs
- InputScopeAttribute.cs
- UserControl.cs
- WebRequestModuleElementCollection.cs
- XmlWriterDelegator.cs
- XPathCompileException.cs
- WorkItem.cs
- BrowserTree.cs
- ShutDownListener.cs
- TransportSecurityBindingElement.cs
- QilTypeChecker.cs
- XmlSchemaFacet.cs
- XmlReflectionImporter.cs
- CompositeControl.cs
- XmlILIndex.cs
- XmlUtf8RawTextWriter.cs
- HtmlInputFile.cs
- JoinSymbol.cs
- SQLBytes.cs
- EllipticalNodeOperations.cs
- TagPrefixInfo.cs
- ElementHost.cs
- ToolStripScrollButton.cs
- ExpressionHelper.cs
- DependencyPropertyHelper.cs
- rsa.cs
- FixedTextContainer.cs
- XmlCharCheckingReader.cs
- NGCSerializer.cs
- AstTree.cs
- PageStatePersister.cs
- Catch.cs
- Wildcard.cs
- DBConnection.cs
- AssemblyBuilder.cs
- DBDataPermissionAttribute.cs
- QuaternionKeyFrameCollection.cs
- ExtensibleClassFactory.cs
- InkCanvasFeedbackAdorner.cs
- RewritingValidator.cs