Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / AppendHelper.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CheckBox.cs
- TextTabProperties.cs
- DataGridColumnCollection.cs
- ResourceProviderFactory.cs
- Pkcs7Recipient.cs
- Attributes.cs
- DropDownHolder.cs
- AttachmentCollection.cs
- ApplicationHost.cs
- TopClause.cs
- NavigationCommands.cs
- KeyedCollection.cs
- TemplateBindingExpressionConverter.cs
- FontResourceCache.cs
- SystemTcpConnection.cs
- securitymgrsite.cs
- SafeNativeMethods.cs
- IdentifierCollection.cs
- ProxyGenerationError.cs
- ProtocolViolationException.cs
- GeneratedView.cs
- HandlerFactoryWrapper.cs
- Pointer.cs
- ForEachAction.cs
- MeasureData.cs
- PreservationFileReader.cs
- DataServiceHost.cs
- NativeStructs.cs
- ProjectionCamera.cs
- ToolboxComponentsCreatingEventArgs.cs
- UidManager.cs
- DynamicDiscoveryDocument.cs
- PowerStatus.cs
- CodePropertyReferenceExpression.cs
- DataGridItemEventArgs.cs
- GregorianCalendarHelper.cs
- StringConcat.cs
- QueryStringParameter.cs
- HostProtectionPermission.cs
- DummyDataSource.cs
- GetPageNumberCompletedEventArgs.cs
- PenThreadWorker.cs
- CodeEntryPointMethod.cs
- X509CertificateClaimSet.cs
- EventArgs.cs
- ModuleElement.cs
- WsatAdminException.cs
- DataGridLinkButton.cs
- SendMailErrorEventArgs.cs
- OleCmdHelper.cs
- BindingManagerDataErrorEventArgs.cs
- SuppressMergeCheckAttribute.cs
- InputProcessorProfiles.cs
- FixedSOMSemanticBox.cs
- WindowInteropHelper.cs
- IndentedWriter.cs
- SingleAnimation.cs
- DetailsViewRow.cs
- TransferRequestHandler.cs
- TdsParameterSetter.cs
- VisualBrush.cs
- CallSiteOps.cs
- Cursor.cs
- BinaryParser.cs
- FontCacheUtil.cs
- DependencyObjectCodeDomSerializer.cs
- AssemblyAttributes.cs
- XPathNavigatorKeyComparer.cs
- ManagementException.cs
- SchemaName.cs
- TypeConverterHelper.cs
- ExpressionBindingCollection.cs
- UnmanagedMarshal.cs
- FixedPageProcessor.cs
- CheckedPointers.cs
- FormViewUpdatedEventArgs.cs
- TransactedReceiveData.cs
- InternalResources.cs
- NullReferenceException.cs
- HashMembershipCondition.cs
- ProtectedConfiguration.cs
- LocalizationParserHooks.cs
- TextProperties.cs
- TokenBasedSetEnumerator.cs
- BaseCodePageEncoding.cs
- QilBinary.cs
- BrowsableAttribute.cs
- CodeSnippetStatement.cs
- SQLChars.cs
- WindowsTooltip.cs
- DiagnosticTrace.cs
- _FtpControlStream.cs
- PageThemeCodeDomTreeGenerator.cs
- TreeIterators.cs
- XamlDesignerSerializationManager.cs
- RegularExpressionValidator.cs
- ObjectDataProvider.cs
- WebDisplayNameAttribute.cs
- CryptoKeySecurity.cs
- ConfigurationManagerInternal.cs