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
- HttpServerVarsCollection.cs
- Stream.cs
- PeerContact.cs
- LogicalExpressionTypeConverter.cs
- HighContrastHelper.cs
- WebBrowserContainer.cs
- HtmlControlPersistable.cs
- DecoderExceptionFallback.cs
- OleAutBinder.cs
- Maps.cs
- Pen.cs
- ReadWriteObjectLock.cs
- GridViewColumnCollection.cs
- UpdateManifestForBrowserApplication.cs
- EncoderFallback.cs
- _UriTypeConverter.cs
- LayoutEditorPart.cs
- LineVisual.cs
- PeerApplication.cs
- UserNameSecurityTokenProvider.cs
- _NegotiateClient.cs
- PhonemeEventArgs.cs
- Rss20FeedFormatter.cs
- SpellerHighlightLayer.cs
- SqlCacheDependencySection.cs
- SqlXmlStorage.cs
- ScalarConstant.cs
- EntitySqlQueryBuilder.cs
- HtmlInputHidden.cs
- SystemIcons.cs
- DeferredBinaryDeserializerExtension.cs
- XmlTextEncoder.cs
- PointAnimationUsingKeyFrames.cs
- SecurityState.cs
- WebDescriptionAttribute.cs
- HttpDictionary.cs
- BrowserDefinition.cs
- OdbcHandle.cs
- AutoScrollHelper.cs
- SerializationInfo.cs
- DataTableNewRowEvent.cs
- BuildProviderCollection.cs
- CatalogZoneBase.cs
- SwitchCase.cs
- DataServiceHost.cs
- ThrowOnMultipleAssignment.cs
- SafeArchiveContext.cs
- KeySpline.cs
- ExtractedStateEntry.cs
- StructuredTypeEmitter.cs
- Decoder.cs
- DesignerVerbCollection.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CacheModeValueSerializer.cs
- CachedFontFamily.cs
- RijndaelManaged.cs
- Double.cs
- JsonSerializer.cs
- BaseDataListActionList.cs
- SimpleType.cs
- CryptoConfig.cs
- TemplateBindingExtensionConverter.cs
- BamlReader.cs
- RuleSettings.cs
- ContextMenuStrip.cs
- Model3DGroup.cs
- ToolStripRenderEventArgs.cs
- XmlSortKey.cs
- PreloadedPackages.cs
- MULTI_QI.cs
- ObjectReaderCompiler.cs
- CardSpaceException.cs
- ControlParameter.cs
- ResourceReferenceKeyNotFoundException.cs
- DefaultHttpHandler.cs
- UpdateCompiler.cs
- LassoHelper.cs
- NotificationContext.cs
- XPathPatternBuilder.cs
- RunInstallerAttribute.cs
- Encoder.cs
- ValueProviderWrapper.cs
- WindowsFormsSynchronizationContext.cs
- AssemblyNameProxy.cs
- MatrixUtil.cs
- AdPostCacheSubstitution.cs
- ViewCellRelation.cs
- HostVisual.cs
- ListView.cs
- TextHidden.cs
- Zone.cs
- CompilerLocalReference.cs
- DifferencingCollection.cs
- XmlRootAttribute.cs
- UpdateRecord.cs
- ProgressChangedEventArgs.cs
- MaskedTextProvider.cs
- ASCIIEncoding.cs
- DataRowView.cs
- TogglePattern.cs