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
- EntityContainerRelationshipSetEnd.cs
- ExternalFile.cs
- BindingNavigator.cs
- StringInfo.cs
- SharedUtils.cs
- EventlogProvider.cs
- LogSwitch.cs
- SiteMapNodeCollection.cs
- ContentPresenter.cs
- CodeLabeledStatement.cs
- XmlSortKeyAccumulator.cs
- UdpTransportSettingsElement.cs
- Timer.cs
- ToolStripEditorManager.cs
- ExpressionBinding.cs
- PagesSection.cs
- CompoundFileReference.cs
- SettingsPropertyIsReadOnlyException.cs
- Misc.cs
- ListViewItem.cs
- IISMapPath.cs
- SettingsPropertyValueCollection.cs
- LifetimeServices.cs
- ThumbAutomationPeer.cs
- RectangleHotSpot.cs
- DocumentApplicationJournalEntry.cs
- TextModifierScope.cs
- HtmlUtf8RawTextWriter.cs
- TypeConverterAttribute.cs
- TextServicesHost.cs
- IdentityManager.cs
- PlaceHolder.cs
- DnsPermission.cs
- InstallerTypeAttribute.cs
- LinearKeyFrames.cs
- PageEventArgs.cs
- MD5HashHelper.cs
- DispatcherHookEventArgs.cs
- EdmType.cs
- Helper.cs
- SqlProcedureAttribute.cs
- WebPartManagerDesigner.cs
- CannotUnloadAppDomainException.cs
- ToolStripItemEventArgs.cs
- TrackingDataItem.cs
- PermissionListSet.cs
- Blend.cs
- QuaternionIndependentAnimationStorage.cs
- XmlCharacterData.cs
- While.cs
- TypeForwardedToAttribute.cs
- FocusTracker.cs
- ipaddressinformationcollection.cs
- MultiSelectRootGridEntry.cs
- InvalidTimeZoneException.cs
- HashRepartitionEnumerator.cs
- Maps.cs
- RemotingSurrogateSelector.cs
- PrintDialog.cs
- MetadataPropertyCollection.cs
- ScriptControlDescriptor.cs
- LambdaCompiler.Generated.cs
- DeviceFiltersSection.cs
- Menu.cs
- Matrix3D.cs
- SoapSchemaMember.cs
- ImageListUtils.cs
- C14NUtil.cs
- StringValidator.cs
- Label.cs
- SourceInterpreter.cs
- AnnotationAdorner.cs
- RegexCompilationInfo.cs
- PropertyPushdownHelper.cs
- LineGeometry.cs
- GeneralTransform3D.cs
- AgileSafeNativeMemoryHandle.cs
- MetadataUtilsSmi.cs
- baseaxisquery.cs
- ColorInterpolationModeValidation.cs
- SqlDataSourceConfigureSortForm.cs
- DrawItemEvent.cs
- Point3DValueSerializer.cs
- BroadcastEventHelper.cs
- Matrix.cs
- MenuBase.cs
- ClientBuildManager.cs
- DocumentGrid.cs
- HuffModule.cs
- TraceContextEventArgs.cs
- _HelperAsyncResults.cs
- MasterPage.cs
- XmlSerializerFormatAttribute.cs
- SimpleBitVector32.cs
- ellipse.cs
- PathGradientBrush.cs
- PerfService.cs
- ContentPresenter.cs
- ListViewInsertEventArgs.cs
- PreservationFileWriter.cs