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
- HwndSource.cs
- _Rfc2616CacheValidators.cs
- MimeTypeMapper.cs
- MetaChildrenColumn.cs
- VisualStyleElement.cs
- RightsManagementEncryptedStream.cs
- SHA1Managed.cs
- SmiContextFactory.cs
- DesignTableCollection.cs
- FloaterBaseParagraph.cs
- ViewSimplifier.cs
- Point4DValueSerializer.cs
- ChangePassword.cs
- RouteItem.cs
- CompilerScope.cs
- NetMsmqBinding.cs
- EntityDataSourceMemberPath.cs
- TextTreeExtractElementUndoUnit.cs
- XmlLanguage.cs
- MultiSelectRootGridEntry.cs
- Divide.cs
- DesignerSerializerAttribute.cs
- TypeUtil.cs
- DataConnectionHelper.cs
- PolicyLevel.cs
- BuildProvider.cs
- FixedSOMTableRow.cs
- WinInetCache.cs
- newinstructionaction.cs
- XmlSchemaSimpleTypeRestriction.cs
- GeneralTransformCollection.cs
- FormsAuthenticationModule.cs
- PolicyUnit.cs
- ModifierKeysConverter.cs
- FlowDocumentView.cs
- MetafileHeader.cs
- HashAlgorithm.cs
- HttpRuntime.cs
- Base64Stream.cs
- StringDictionaryCodeDomSerializer.cs
- StateItem.cs
- RecordConverter.cs
- PathStreamGeometryContext.cs
- ClickablePoint.cs
- WinFormsComponentEditor.cs
- PageStatePersister.cs
- WebServiceData.cs
- DnsPermission.cs
- WmlLiteralTextAdapter.cs
- WebHttpDispatchOperationSelector.cs
- AsyncResult.cs
- AlignmentXValidation.cs
- SimpleExpression.cs
- DbConnectionPool.cs
- WebHeaderCollection.cs
- XmlAttribute.cs
- Header.cs
- sitestring.cs
- ScrollChrome.cs
- SingleObjectCollection.cs
- DateRangeEvent.cs
- EntityTypeEmitter.cs
- CharEnumerator.cs
- UiaCoreApi.cs
- TargetControlTypeCache.cs
- XmlObjectSerializerWriteContextComplex.cs
- StylusCollection.cs
- ConfigsHelper.cs
- Size3DValueSerializer.cs
- BamlBinaryReader.cs
- DesignTimeData.cs
- ToolStripDesigner.cs
- Geometry3D.cs
- XmlBinaryWriterSession.cs
- PropertiesTab.cs
- ThrowHelper.cs
- TeredoHelper.cs
- SelectionUIService.cs
- DebugController.cs
- EventMappingSettings.cs
- Stack.cs
- XmlSchemaComplexContentRestriction.cs
- IxmlLineInfo.cs
- ProcessModule.cs
- ObjectListDataBindEventArgs.cs
- XmlTextReaderImpl.cs
- dataobject.cs
- CompositeActivityTypeDescriptor.cs
- XmlSignificantWhitespace.cs
- ExecutorLocksHeldException.cs
- MetricEntry.cs
- __FastResourceComparer.cs
- InputLangChangeRequestEvent.cs
- ConstructorExpr.cs
- WebPartConnectionsCancelVerb.cs
- MediaTimeline.cs
- ApplicationDirectoryMembershipCondition.cs
- ToolBarPanel.cs
- SignedXml.cs
- ToolBarTray.cs