Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- StateDesignerConnector.cs
- PasswordDeriveBytes.cs
- ListControlStringCollectionEditor.cs
- NumberFunctions.cs
- SQLMembershipProvider.cs
- XPathChildIterator.cs
- LambdaCompiler.Statements.cs
- WebBrowserSiteBase.cs
- XamlWriter.cs
- EntityExpressionVisitor.cs
- XPathNodeInfoAtom.cs
- ZipIOCentralDirectoryBlock.cs
- TypeSemantics.cs
- SoapExtensionTypeElementCollection.cs
- DiscardableAttribute.cs
- RepeaterItemCollection.cs
- DeviceSpecificChoiceCollection.cs
- TabPanel.cs
- OracleNumber.cs
- WinEventWrap.cs
- SessionSwitchEventArgs.cs
- LeaseManager.cs
- Module.cs
- PageMediaSize.cs
- XmlMtomWriter.cs
- BindingOperations.cs
- DataSourceXmlTextReader.cs
- WindowPatternIdentifiers.cs
- ToolTipAutomationPeer.cs
- XmlElement.cs
- SectionInput.cs
- XmlSchemaExternal.cs
- IncrementalReadDecoders.cs
- MethodCallConverter.cs
- CreateRefExpr.cs
- ChangeDirector.cs
- SectionVisual.cs
- SQlBooleanStorage.cs
- TemplateDefinition.cs
- SqlRecordBuffer.cs
- ByteKeyFrameCollection.cs
- GridProviderWrapper.cs
- DefaultSection.cs
- HwndAppCommandInputProvider.cs
- PageAsyncTaskManager.cs
- SynchronizedDispatch.cs
- PageSetupDialog.cs
- Membership.cs
- log.cs
- Trace.cs
- Win32KeyboardDevice.cs
- TableCellAutomationPeer.cs
- ActivityExecutorSurrogate.cs
- TimeoutException.cs
- DropDownButton.cs
- SaveFileDialog.cs
- FileDialog_Vista.cs
- NetSectionGroup.cs
- StorageEntityContainerMapping.cs
- ListDictionary.cs
- BinaryOperationBinder.cs
- ActiveDocumentEvent.cs
- XmlIterators.cs
- CodeNamespaceImportCollection.cs
- ClientSideProviderDescription.cs
- X509Extension.cs
- ActivatedMessageQueue.cs
- AnimationClock.cs
- RegexMatch.cs
- WmlLabelAdapter.cs
- NetworkStream.cs
- ExceptionDetail.cs
- XmlSchemaGroupRef.cs
- OSFeature.cs
- CommentEmitter.cs
- IxmlLineInfo.cs
- HandlerWithFactory.cs
- propertyentry.cs
- EntityParameter.cs
- WindowProviderWrapper.cs
- FileDialogCustomPlaces.cs
- filewebrequest.cs
- FormsIdentity.cs
- UiaCoreTypesApi.cs
- SeverityFilter.cs
- DBCommandBuilder.cs
- Calendar.cs
- EnumerableRowCollection.cs
- ClientSettingsSection.cs
- CodeGenerator.cs
- ImportContext.cs
- CodeRemoveEventStatement.cs
- Math.cs
- streamingZipPartStream.cs
- MachineKeySection.cs
- control.ime.cs
- __FastResourceComparer.cs
- TextRunProperties.cs
- ComplexBindingPropertiesAttribute.cs
- ObservableCollection.cs