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
- DataPagerField.cs
- SerialReceived.cs
- NavigationService.cs
- SQLDouble.cs
- PipelineComponent.cs
- counter.cs
- HijriCalendar.cs
- PrinterSettings.cs
- StorageSetMapping.cs
- Helper.cs
- TransactionBridge.cs
- CompositeScriptReferenceEventArgs.cs
- ContentDisposition.cs
- Attributes.cs
- SoapInteropTypes.cs
- SerializationEventsCache.cs
- WindowsGraphicsWrapper.cs
- BaseDataBoundControl.cs
- AvTraceDetails.cs
- SubtreeProcessor.cs
- SupportingTokenDuplexChannel.cs
- LazyTextWriterCreator.cs
- PtsHost.cs
- Expressions.cs
- ClientRolePrincipal.cs
- NativeActivity.cs
- CommandSet.cs
- GrammarBuilderWildcard.cs
- LayoutTable.cs
- DataSetMappper.cs
- ResXFileRef.cs
- TextSelectionProcessor.cs
- WaitHandle.cs
- PagedDataSource.cs
- CategoryAttribute.cs
- ConfigurationLocation.cs
- SpecialNameAttribute.cs
- CachedFontFace.cs
- RequestCachingSection.cs
- ClientSideProviderDescription.cs
- ReturnValue.cs
- SafeNativeMethods.cs
- BuildResultCache.cs
- GridViewRowPresenterBase.cs
- DataGridViewCheckBoxColumn.cs
- FlowDocumentPageViewerAutomationPeer.cs
- XPathItem.cs
- WebReference.cs
- PrivacyNoticeBindingElementImporter.cs
- ImageMap.cs
- FilterUserControlBase.cs
- XmlText.cs
- TimeoutException.cs
- Baml2006ReaderSettings.cs
- KeyGestureConverter.cs
- Panel.cs
- Selection.cs
- ModulesEntry.cs
- DbModificationCommandTree.cs
- StsCommunicationException.cs
- Comparer.cs
- ErrorsHelper.cs
- Rectangle.cs
- InternalPolicyElement.cs
- BoundColumn.cs
- DesignerProperties.cs
- DataControlReferenceCollection.cs
- RoleGroup.cs
- ClientOptions.cs
- Helpers.cs
- DetailsViewRowCollection.cs
- Transform.cs
- UIElementParaClient.cs
- EntityViewGenerator.cs
- SpellerHighlightLayer.cs
- ManipulationPivot.cs
- BamlCollectionHolder.cs
- SignedPkcs7.cs
- IfJoinedCondition.cs
- FilterQuery.cs
- ClientUrlResolverWrapper.cs
- TextBoxBase.cs
- Line.cs
- SiteMap.cs
- coordinatorscratchpad.cs
- MediaSystem.cs
- NetworkInformationException.cs
- TextSchema.cs
- ComponentEditorForm.cs
- ListView.cs
- ChannelServices.cs
- EntityCommandDefinition.cs
- ToolStripPanel.cs
- TreeNodeStyleCollection.cs
- SourceElementsCollection.cs
- FixedPosition.cs
- LabelAutomationPeer.cs
- AdornerHitTestResult.cs
- SQLRoleProvider.cs
- WorkflowTransactionService.cs