Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1305376 / 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;
}
[System.Security.SecurityCritical] // auto-generated
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;
}
[System.Security.SecurityCritical] // auto-generated
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
- XmlnsPrefixAttribute.cs
- XmlComplianceUtil.cs
- HelpInfo.cs
- ColorTransformHelper.cs
- Number.cs
- regiisutil.cs
- SchemaComplexType.cs
- ReadOnlyHierarchicalDataSource.cs
- Pkcs7Recipient.cs
- PreProcessInputEventArgs.cs
- ResourceManager.cs
- XmlnsDictionary.cs
- InputProcessorProfiles.cs
- XmlWellformedWriter.cs
- autovalidator.cs
- GeometryGroup.cs
- SupportingTokenSpecification.cs
- ProcessHostFactoryHelper.cs
- SevenBitStream.cs
- ToolStripSeparatorRenderEventArgs.cs
- ListViewItem.cs
- TreeView.cs
- ScriptingSectionGroup.cs
- ClientSettingsProvider.cs
- ListViewItemEventArgs.cs
- CodeTypeReference.cs
- SwitchAttribute.cs
- ListItemCollection.cs
- ObjectItemCollection.cs
- SqlOuterApplyReducer.cs
- _UriSyntax.cs
- MouseGesture.cs
- SymmetricAlgorithm.cs
- ConfigXmlReader.cs
- UrlAuthFailureHandler.cs
- StructuralCache.cs
- DependsOnAttribute.cs
- DebugHandleTracker.cs
- SendingRequestEventArgs.cs
- ProcessModelSection.cs
- DefaultValueAttribute.cs
- StateMachineAction.cs
- PerfCounters.cs
- DataBoundControlHelper.cs
- DbUpdateCommandTree.cs
- OverrideMode.cs
- QuaternionRotation3D.cs
- TcpPortSharing.cs
- SqlTypeConverter.cs
- CompilationLock.cs
- FullTextBreakpoint.cs
- VirtualPathUtility.cs
- CapabilitiesAssignment.cs
- OdbcUtils.cs
- CodeIterationStatement.cs
- ShapingWorkspace.cs
- SamlAuthorityBinding.cs
- InkCanvasSelection.cs
- VectorValueSerializer.cs
- EtwTrace.cs
- LogicalTreeHelper.cs
- XPathNodeList.cs
- RoleManagerModule.cs
- RegexFCD.cs
- LinqDataSourceHelper.cs
- WeakReferenceKey.cs
- FileUtil.cs
- HtmlFormWrapper.cs
- XPathException.cs
- ReferencedCollectionType.cs
- ServiceAppDomainAssociationProvider.cs
- AddInBase.cs
- CodeIdentifiers.cs
- ipaddressinformationcollection.cs
- Helpers.cs
- UserControlBuildProvider.cs
- FixedSOMTable.cs
- CodeDomLoader.cs
- OneWayChannelFactory.cs
- StoreContentChangedEventArgs.cs
- ToolStripItemBehavior.cs
- BufferedWebEventProvider.cs
- TextRangeEdit.cs
- CultureInfoConverter.cs
- CompareInfo.cs
- Set.cs
- FileUtil.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- WindowInteractionStateTracker.cs
- InvokeHandlers.cs
- Scheduling.cs
- XPathMultyIterator.cs
- ReachDocumentReferenceSerializerAsync.cs
- CachedFontFace.cs
- FormViewDeletedEventArgs.cs
- CopyAttributesAction.cs
- ComboBox.cs
- XmlSchemaAny.cs
- SessionEndingEventArgs.cs
- XmlILModule.cs