Code:
/ 4.0 / 4.0 / 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[....] 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
- Latin1Encoding.cs
- InkCanvas.cs
- EmptyImpersonationContext.cs
- ClientUtils.cs
- ArcSegment.cs
- ColumnBinding.cs
- BinaryKeyIdentifierClause.cs
- SecurityRequiresReviewAttribute.cs
- NetSectionGroup.cs
- HMACSHA256.cs
- ConfigXmlCDataSection.cs
- OracleCommand.cs
- QuaternionConverter.cs
- ListViewItem.cs
- StyleXamlParser.cs
- InternalControlCollection.cs
- UrlPropertyAttribute.cs
- ProcessHostConfigUtils.cs
- SchemaComplexType.cs
- UpdateCommandGenerator.cs
- EventWaitHandle.cs
- RIPEMD160.cs
- CheckedListBox.cs
- SiteOfOriginContainer.cs
- XmlSchemaProviderAttribute.cs
- CreateInstanceBinder.cs
- SessionStateUtil.cs
- LabelEditEvent.cs
- ScrollBarAutomationPeer.cs
- TextElementEnumerator.cs
- RijndaelManagedTransform.cs
- ModifyActivitiesPropertyDescriptor.cs
- TypeBuilder.cs
- PropertyIDSet.cs
- AtomPub10CategoriesDocumentFormatter.cs
- DefaultBinder.cs
- Stack.cs
- DocumentEventArgs.cs
- DynamicDataRouteHandler.cs
- HwndMouseInputProvider.cs
- PriorityBinding.cs
- KeyConstraint.cs
- _LazyAsyncResult.cs
- SecurityKeyType.cs
- WebEvents.cs
- QuadraticBezierSegment.cs
- ForeignConstraint.cs
- ResourceAssociationTypeEnd.cs
- RectangleHotSpot.cs
- PersonalizationStateInfoCollection.cs
- WindowCollection.cs
- ObsoleteAttribute.cs
- TextRange.cs
- TempFiles.cs
- iisPickupDirectory.cs
- IdentityReference.cs
- InvokeBinder.cs
- EastAsianLunisolarCalendar.cs
- XPathItem.cs
- ProxyDataContractResolver.cs
- SettingsPropertyIsReadOnlyException.cs
- FrameDimension.cs
- TextProperties.cs
- WebPartHelpVerb.cs
- DesignBinding.cs
- Label.cs
- InvalidBodyAccessException.cs
- URLAttribute.cs
- CustomErrorsSectionWrapper.cs
- EditBehavior.cs
- AssertFilter.cs
- MarkupCompilePass2.cs
- BindingExpression.cs
- BinaryKeyIdentifierClause.cs
- MachineKeySection.cs
- HMACMD5.cs
- ErrorHandler.cs
- ResourceReferenceExpressionConverter.cs
- TranslateTransform.cs
- TreeNodeEventArgs.cs
- DeferredElementTreeState.cs
- DockPatternIdentifiers.cs
- XmlAttributeAttribute.cs
- NavigatorOutput.cs
- SafeNativeMethodsCLR.cs
- WeakReferenceEnumerator.cs
- ColumnResizeAdorner.cs
- TemplatedMailWebEventProvider.cs
- _NTAuthentication.cs
- XmlAnyElementAttributes.cs
- BamlResourceContent.cs
- MatrixCamera.cs
- DtrList.cs
- FileRecordSequenceHelper.cs
- NonSerializedAttribute.cs
- WebExceptionStatus.cs
- FixedDSBuilder.cs
- EntityContainerRelationshipSetEnd.cs
- BitHelper.cs
- _TimerThread.cs