Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1 / LeaseManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //+---------------------------------------------------------------------------- // // Microsoft Windows // File: LeaseManager.cs // // Contents: Administers the leases in an appdomain // // History: 1/5/00[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectTypeMapping.cs
- SynchronizedDispatch.cs
- ObjectItemCachedAssemblyLoader.cs
- ClientScriptManager.cs
- DrawingBrush.cs
- AssemblyCache.cs
- BaseCodeDomTreeGenerator.cs
- Security.cs
- HttpCookie.cs
- MembershipUser.cs
- ImageInfo.cs
- DelegateTypeInfo.cs
- LogFlushAsyncResult.cs
- DiscreteKeyFrames.cs
- IisHelper.cs
- Bidi.cs
- PTConverter.cs
- TransactionTable.cs
- SubclassTypeValidatorAttribute.cs
- LinqExpressionNormalizer.cs
- RegexParser.cs
- DataGridViewRowPostPaintEventArgs.cs
- VirtualDirectoryMapping.cs
- SafeLocalMemHandle.cs
- CurrentChangingEventArgs.cs
- SlipBehavior.cs
- TypedMessageConverter.cs
- UpdatePanelTrigger.cs
- DoubleIndependentAnimationStorage.cs
- DeviceContexts.cs
- Itemizer.cs
- TableStyle.cs
- WasEndpointConfigContainer.cs
- CannotUnloadAppDomainException.cs
- ClassGenerator.cs
- AsymmetricKeyExchangeFormatter.cs
- SourceCollection.cs
- GregorianCalendarHelper.cs
- PropertyMapper.cs
- CallSiteOps.cs
- DecoderNLS.cs
- XmlSchemaCollection.cs
- OletxVolatileEnlistment.cs
- XamlStream.cs
- COM2TypeInfoProcessor.cs
- DataGridViewSelectedRowCollection.cs
- FormView.cs
- DoubleAnimationBase.cs
- RequestCache.cs
- XmlAtomicValue.cs
- OperationFormatStyle.cs
- PartBasedPackageProperties.cs
- BindingListCollectionView.cs
- Paragraph.cs
- TypeLoadException.cs
- WindowsToolbar.cs
- CodeLabeledStatement.cs
- TokenBasedSet.cs
- Parameter.cs
- StatusBarItemAutomationPeer.cs
- LicenseException.cs
- MobileErrorInfo.cs
- SystemResources.cs
- SpnegoTokenAuthenticator.cs
- DocumentViewerAutomationPeer.cs
- XmlChildNodes.cs
- EmptyElement.cs
- RawMouseInputReport.cs
- FileVersion.cs
- DbInsertCommandTree.cs
- ArgumentException.cs
- EditableTreeList.cs
- ToolStripPanelRenderEventArgs.cs
- Helpers.cs
- PropertyConverter.cs
- TransformerInfoCollection.cs
- ObjectDataSourceView.cs
- HtmlTableCellCollection.cs
- PolicyLevel.cs
- DateTimeValueSerializer.cs
- TextRunCache.cs
- BaseParagraph.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- TextElementCollection.cs
- InsufficientMemoryException.cs
- ForceCopyBuildProvider.cs
- CapiNative.cs
- VectorAnimation.cs
- SpecialNameAttribute.cs
- CookieParameter.cs
- HttpException.cs
- ResourceDescriptionAttribute.cs
- FixUpCollection.cs
- BasicViewGenerator.cs
- SecurityKeyUsage.cs
- IndexedGlyphRun.cs
- AutoScrollExpandMessageFilter.cs
- RewritingPass.cs
- PhysicalOps.cs
- EmptyControlCollection.cs