Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- SqlMethodAttribute.cs
- SmiEventSink_DeferedProcessing.cs
- DrawingAttributeSerializer.cs
- ServiceXNameTypeConverter.cs
- AsymmetricSignatureDeformatter.cs
- StringHandle.cs
- TemplateGroupCollection.cs
- NetNamedPipeSecurity.cs
- CallbackDebugElement.cs
- ThreadStaticAttribute.cs
- ADRoleFactory.cs
- PrintDialog.cs
- MediaPlayer.cs
- NamespaceDecl.cs
- PnrpPeerResolverElement.cs
- ResourcePart.cs
- UInt32Converter.cs
- ObjectPersistData.cs
- StylusPointDescription.cs
- RequestResizeEvent.cs
- PrintPageEvent.cs
- TableCellCollection.cs
- WebServiceClientProxyGenerator.cs
- DataGridViewAccessibleObject.cs
- DataSourceProvider.cs
- DbSource.cs
- ArrayTypeMismatchException.cs
- CngKey.cs
- SectionUpdates.cs
- _emptywebproxy.cs
- SessionStateSection.cs
- Point3DAnimationUsingKeyFrames.cs
- ComponentDispatcherThread.cs
- InternalConfigSettingsFactory.cs
- SamlSerializer.cs
- ToolBarPanel.cs
- SqlConnectionPoolProviderInfo.cs
- ReadOnlyMetadataCollection.cs
- DbProviderManifest.cs
- SmtpDigestAuthenticationModule.cs
- XmlSchemaAppInfo.cs
- ToolStripRenderEventArgs.cs
- ProfileProvider.cs
- Registry.cs
- SoapAttributeOverrides.cs
- NativeMethods.cs
- DataConnectionHelper.cs
- OleDbSchemaGuid.cs
- TabControlAutomationPeer.cs
- XmlSchemaSimpleType.cs
- AssociationTypeEmitter.cs
- CatchBlock.cs
- SecurityRuntime.cs
- ObjectDataSourceMethodEventArgs.cs
- MergablePropertyAttribute.cs
- IdnElement.cs
- TaskFormBase.cs
- DictionaryGlobals.cs
- TargetInvocationException.cs
- EtwTrace.cs
- HybridWebProxyFinder.cs
- ControlBuilderAttribute.cs
- AsyncOperationManager.cs
- BigInt.cs
- SqlUtil.cs
- EncoderParameters.cs
- IISUnsafeMethods.cs
- OutgoingWebRequestContext.cs
- XmlResolver.cs
- EntityDesignPluralizationHandler.cs
- DisposableCollectionWrapper.cs
- TextTreePropertyUndoUnit.cs
- GeneralTransform3DTo2D.cs
- SafeFindHandle.cs
- Transform.cs
- ColumnHeaderConverter.cs
- ValueProviderWrapper.cs
- XmlElementList.cs
- MarginsConverter.cs
- MediaContext.cs
- RtfFormatStack.cs
- SymmetricCryptoHandle.cs
- Rect.cs
- InfoCardProofToken.cs
- ListViewItemEventArgs.cs
- StreamGeometry.cs
- EventProviderTraceListener.cs
- Propagator.ExtentPlaceholderCreator.cs
- ExclusiveCanonicalizationTransform.cs
- SmuggledIUnknown.cs
- GlobalAclOperationRequirement.cs
- HostedTransportConfigurationBase.cs
- Filter.cs
- _Events.cs
- wgx_exports.cs
- WmlTextBoxAdapter.cs
- Lazy.cs
- TypeToken.cs
- XmlTextReader.cs
- FileUtil.cs