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
- SystemWebSectionGroup.cs
- OdbcDataReader.cs
- DbParameterCollectionHelper.cs
- ExtentCqlBlock.cs
- ListBox.cs
- WebPartUtil.cs
- ProxyWebPart.cs
- DataGridCellItemAutomationPeer.cs
- DelegatedStream.cs
- Privilege.cs
- AsyncDataRequest.cs
- ListenerSessionConnectionReader.cs
- ScriptRegistrationManager.cs
- MasterPage.cs
- ServiceModelActivity.cs
- ConfigurationCollectionAttribute.cs
- PenThreadPool.cs
- InstalledVoice.cs
- XPathExpr.cs
- BinaryKeyIdentifierClause.cs
- ParameterCollection.cs
- RequestCache.cs
- Trigger.cs
- DecoderFallbackWithFailureFlag.cs
- SizeAnimation.cs
- UpDownEvent.cs
- InstanceValue.cs
- GeneralTransform.cs
- InstanceContextManager.cs
- Matrix3DConverter.cs
- IsolatedStorageFileStream.cs
- PtsHelper.cs
- LinkArea.cs
- XmlSerializationReader.cs
- DnsPermission.cs
- MenuRenderer.cs
- RequiredFieldValidator.cs
- SetIndexBinder.cs
- RowUpdatingEventArgs.cs
- InlineUIContainer.cs
- TextBoxLine.cs
- HwndProxyElementProvider.cs
- ExpressionVisitor.cs
- ServerProtocol.cs
- SafeViewOfFileHandle.cs
- ClientData.cs
- DefaultSection.cs
- TextElementCollectionHelper.cs
- DataGridViewBand.cs
- CollectionEditor.cs
- TextRangeEditLists.cs
- HybridDictionary.cs
- GridPatternIdentifiers.cs
- XMLUtil.cs
- MimeObjectFactory.cs
- HttpRequest.cs
- EntityViewGenerator.cs
- CopyAction.cs
- CssStyleCollection.cs
- RenderData.cs
- XmlAnyAttributeAttribute.cs
- XslVisitor.cs
- SecureEnvironment.cs
- GACIdentityPermission.cs
- ActivationWorker.cs
- ConsumerConnectionPointCollection.cs
- ComEventsInfo.cs
- MemberExpression.cs
- StateFinalizationActivity.cs
- NonVisualControlAttribute.cs
- DataColumnChangeEvent.cs
- DirectionalLight.cs
- XmlNullResolver.cs
- HMACSHA256.cs
- XmlAttributes.cs
- GreenMethods.cs
- WindowsListViewSubItem.cs
- XamlDesignerSerializationManager.cs
- WindowsGraphicsWrapper.cs
- KeyManager.cs
- PersonalizablePropertyEntry.cs
- ProtocolException.cs
- DbResourceAllocator.cs
- HandlerMappingMemo.cs
- BitStack.cs
- DoubleCollection.cs
- DataException.cs
- PeerInvitationResponse.cs
- CallSiteBinder.cs
- Splitter.cs
- Converter.cs
- TextRangeEditLists.cs
- SystemNetHelpers.cs
- DataGridViewRowsRemovedEventArgs.cs
- QilIterator.cs
- CalloutQueueItem.cs
- CodeAccessPermission.cs
- HtmlTableRow.cs
- SerializableTypeCodeDomSerializer.cs
- InvalidOperationException.cs