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
- DbRetry.cs
- LabelInfo.cs
- BaseValidator.cs
- DataSetUtil.cs
- WrappedIUnknown.cs
- SizeIndependentAnimationStorage.cs
- MemoryPressure.cs
- NamespaceInfo.cs
- RangeBaseAutomationPeer.cs
- BufferedWebEventProvider.cs
- GenericWebPart.cs
- TextEmbeddedObject.cs
- XmlWrappingReader.cs
- Aggregates.cs
- ComplexPropertyEntry.cs
- AVElementHelper.cs
- SupportsPreviewControlAttribute.cs
- NavigatorInput.cs
- Subtree.cs
- IIS7ConfigurationLoader.cs
- ClassImporter.cs
- Menu.cs
- UriParserTemplates.cs
- WindowAutomationPeer.cs
- InvokeMemberBinder.cs
- EnumUnknown.cs
- ConfigurationPropertyCollection.cs
- OverlappedContext.cs
- HotSpotCollection.cs
- SoapEnumAttribute.cs
- ConstraintStruct.cs
- XmlIlGenerator.cs
- WriterOutput.cs
- RequestDescription.cs
- Empty.cs
- BindingNavigator.cs
- HttpContextServiceHost.cs
- Process.cs
- DrawListViewSubItemEventArgs.cs
- __Filters.cs
- SystemIPGlobalStatistics.cs
- ActivityWithResult.cs
- FormViewRow.cs
- TdsRecordBufferSetter.cs
- Model3D.cs
- DaylightTime.cs
- XmlCodeExporter.cs
- CommandManager.cs
- StateItem.cs
- DefaultExpressionVisitor.cs
- UnorderedHashRepartitionStream.cs
- ProjectionPruner.cs
- SelectionRange.cs
- DataTemplate.cs
- StreamInfo.cs
- EntityTypeBase.cs
- EraserBehavior.cs
- ParameterCollectionEditorForm.cs
- TempFiles.cs
- MergeFailedEvent.cs
- CryptoHelper.cs
- FormViewModeEventArgs.cs
- ParallelTimeline.cs
- IdentifierService.cs
- EntityDataSourceWizardForm.cs
- FixedElement.cs
- IdleTimeoutMonitor.cs
- WriteFileContext.cs
- ObjectViewListener.cs
- TextInfo.cs
- AdvancedBindingPropertyDescriptor.cs
- login.cs
- CommandValueSerializer.cs
- WeakReference.cs
- QueryReaderSettings.cs
- MessageFault.cs
- Normalization.cs
- EdmMember.cs
- WebPartVerbsEventArgs.cs
- BitmapData.cs
- BaseTemplateBuildProvider.cs
- BaseValidatorDesigner.cs
- RemoteWebConfigurationHost.cs
- FixUpCollection.cs
- RadioButtonStandardAdapter.cs
- DocumentPage.cs
- DeclaredTypeElement.cs
- MenuAutomationPeer.cs
- ExtensibleClassFactory.cs
- ItemCollection.cs
- Perspective.cs
- MimeTypePropertyAttribute.cs
- WebPartConnectionsCancelVerb.cs
- ClockController.cs
- SliderAutomationPeer.cs
- HtmlToClrEventProxy.cs
- ToolTipService.cs
- GorillaCodec.cs
- CompilerResults.cs
- OpenFileDialog.cs