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
- ServerIdentity.cs
- StrokeDescriptor.cs
- UIntPtr.cs
- shaper.cs
- BaseTreeIterator.cs
- XmlSchemaComplexContent.cs
- ObjectNavigationPropertyMapping.cs
- ToolStripArrowRenderEventArgs.cs
- XmlLoader.cs
- TextCompositionManager.cs
- SafeNativeHandle.cs
- TransactionState.cs
- ResumeStoryboard.cs
- CategoryAttribute.cs
- UserNameSecurityToken.cs
- SectionVisual.cs
- cache.cs
- PropertyToken.cs
- DataServiceExpressionVisitor.cs
- LingerOption.cs
- ConstNode.cs
- Enum.cs
- RegistrationServices.cs
- SqlMethodAttribute.cs
- WMIGenerator.cs
- Math.cs
- StatusBarPanelClickEvent.cs
- GridViewColumn.cs
- SqlWebEventProvider.cs
- RemoveStoryboard.cs
- OleAutBinder.cs
- ServiceTimeoutsElement.cs
- Converter.cs
- XhtmlConformanceSection.cs
- OleDbParameter.cs
- newitemfactory.cs
- MessageAction.cs
- InlineUIContainer.cs
- PreservationFileWriter.cs
- UIElementParagraph.cs
- NavigationCommands.cs
- FileDialog.cs
- ErrorView.xaml.cs
- WebRequestModuleElement.cs
- SplitterEvent.cs
- BitmapEffectInputData.cs
- CustomTypeDescriptor.cs
- RegexGroup.cs
- Inflater.cs
- ADMembershipUser.cs
- BamlTreeMap.cs
- DesignBinding.cs
- TextTreeDeleteContentUndoUnit.cs
- VisualTreeHelper.cs
- TaskResultSetter.cs
- ItemList.cs
- SqlDataSourceView.cs
- SymLanguageType.cs
- SQLResource.cs
- MemoryPressure.cs
- ExplicitDiscriminatorMap.cs
- UnsafeNativeMethods.cs
- SoapAttributeAttribute.cs
- SortKey.cs
- ConfigXmlDocument.cs
- SiteMapSection.cs
- X500Name.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DiscoveryClientReferences.cs
- WebPartConnection.cs
- DesignTimeTemplateParser.cs
- PropertyValueChangedEvent.cs
- AssociationSet.cs
- Array.cs
- EncryptedType.cs
- OracleRowUpdatedEventArgs.cs
- ElementFactory.cs
- KeyValueSerializer.cs
- HttpListenerResponse.cs
- DataExpression.cs
- FixedHyperLink.cs
- DataViewManager.cs
- FilteredXmlReader.cs
- ResourceDescriptionAttribute.cs
- UnsafeNativeMethods.cs
- ProcessHostFactoryHelper.cs
- AssemblyCacheEntry.cs
- WSSecurityPolicy12.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- DataTableTypeConverter.cs
- ControllableStoryboardAction.cs
- BitmapScalingModeValidation.cs
- FontSourceCollection.cs
- AccessDataSource.cs
- LogEntryDeserializer.cs
- TextDecorationLocationValidation.cs
- COSERVERINFO.cs
- EpmContentSerializerBase.cs
- GridViewUpdateEventArgs.cs
- HttpHandlerAction.cs