Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / AppendHelper.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RoleGroup.cs
- IItemProperties.cs
- HandleTable.cs
- SqlConnectionPoolProviderInfo.cs
- TypeUnloadedException.cs
- WhitespaceRuleLookup.cs
- basecomparevalidator.cs
- RowUpdatingEventArgs.cs
- WpfSharedXamlSchemaContext.cs
- MinimizableAttributeTypeConverter.cs
- DataGridItemCollection.cs
- DependencyPropertyHelper.cs
- CategoriesDocument.cs
- SubMenuStyle.cs
- XhtmlConformanceSection.cs
- FixedSchema.cs
- EventProviderWriter.cs
- BufferedStream.cs
- SingleObjectCollection.cs
- Constants.cs
- SoapTypeAttribute.cs
- XmlStreamNodeWriter.cs
- SqlReorderer.cs
- TextEditorParagraphs.cs
- InvalidCastException.cs
- StructuredType.cs
- CrossContextChannel.cs
- MetricEntry.cs
- ChunkedMemoryStream.cs
- KeyConstraint.cs
- MethodAccessException.cs
- ListItemCollection.cs
- ExpiredSecurityTokenException.cs
- CommandField.cs
- PeerApplicationLaunchInfo.cs
- objectquery_tresulttype.cs
- AppSettingsReader.cs
- AutomationTextAttribute.cs
- Faults.cs
- ToolboxItem.cs
- ThumbButtonInfo.cs
- ServerType.cs
- CompilerResults.cs
- BatchServiceHost.cs
- AnnotationAdorner.cs
- DesignTimeParseData.cs
- AutoGeneratedFieldProperties.cs
- PartitionedStream.cs
- ProxyGenerationError.cs
- EventLogTraceListener.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- LinqDataSourceDeleteEventArgs.cs
- IPHostEntry.cs
- PopupEventArgs.cs
- XmlTypeMapping.cs
- assertwrapper.cs
- ClipboardData.cs
- XPathNavigatorKeyComparer.cs
- InvalidOleVariantTypeException.cs
- XmlSchemaSimpleTypeRestriction.cs
- BindingOperations.cs
- EdmFunction.cs
- SelectingProviderEventArgs.cs
- TabControl.cs
- IconBitmapDecoder.cs
- IriParsingElement.cs
- ElementProxy.cs
- FrameworkTextComposition.cs
- StringComparer.cs
- CompositeActivityMarkupSerializer.cs
- DiscoveryClientReferences.cs
- SetUserLanguageRequest.cs
- MatchSingleFxEngineOpcode.cs
- RoutingConfiguration.cs
- TreeViewImageIndexConverter.cs
- NamespaceMapping.cs
- CallbackHandler.cs
- _TLSstream.cs
- TraceEventCache.cs
- DocumentXPathNavigator.cs
- EntityViewGenerationConstants.cs
- DataFormats.cs
- OdbcParameterCollection.cs
- ArraySet.cs
- CDSsyncETWBCLProvider.cs
- TemplateBuilder.cs
- GeneratedCodeAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- DoubleAnimationClockResource.cs
- FormClosingEvent.cs
- StyleHelper.cs
- SmiContextFactory.cs
- DbConnectionInternal.cs
- HandleCollector.cs
- Interlocked.cs
- EntityDataSourceColumn.cs
- Tracer.cs
- SelectionService.cs
- ParserContext.cs
- ConfigurationSchemaErrors.cs