Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WMICapabilities.cs
- FlowLayout.cs
- CompleteWizardStep.cs
- WeakReferenceEnumerator.cs
- TextElement.cs
- XamlGridLengthSerializer.cs
- XPathAncestorIterator.cs
- XPathNodeInfoAtom.cs
- ScriptingRoleServiceSection.cs
- SequenceFullException.cs
- SqlCommandBuilder.cs
- SqlUnionizer.cs
- HttpModulesSection.cs
- XmlException.cs
- Listbox.cs
- ObjectStorage.cs
- SafeViewOfFileHandle.cs
- NumericUpDownAcceleration.cs
- HitTestResult.cs
- OracleBFile.cs
- _NetworkingPerfCounters.cs
- MethodBuilder.cs
- EventOpcode.cs
- ConfigurationFileMap.cs
- MaskDescriptor.cs
- HandlerMappingMemo.cs
- HostingEnvironmentWrapper.cs
- RectangleConverter.cs
- OdbcInfoMessageEvent.cs
- CodeIdentifiers.cs
- CLSCompliantAttribute.cs
- DisableDpiAwarenessAttribute.cs
- StreamUpdate.cs
- Icon.cs
- PopupControlService.cs
- LogAppendAsyncResult.cs
- ReadOnlyCollection.cs
- RadioButtonList.cs
- MenuItemStyle.cs
- FaultConverter.cs
- UdpDuplexChannel.cs
- IgnoreFileBuildProvider.cs
- RuleSetCollection.cs
- AppSettingsReader.cs
- Sql8ConformanceChecker.cs
- ExpandButtonVisibilityConverter.cs
- UICuesEvent.cs
- TracedNativeMethods.cs
- StreamWriter.cs
- Encoder.cs
- ColorContext.cs
- EndpointAddressMessageFilterTable.cs
- MeasureItemEvent.cs
- InputLanguage.cs
- AssertFilter.cs
- XmlNamespaceDeclarationsAttribute.cs
- Int32RectConverter.cs
- WindowsTitleBar.cs
- PlatformCulture.cs
- GiveFeedbackEventArgs.cs
- SelectionEditor.cs
- FontFamily.cs
- RawStylusSystemGestureInputReport.cs
- Expander.cs
- Renderer.cs
- XamlSerializer.cs
- AsymmetricKeyExchangeFormatter.cs
- CodeAccessSecurityEngine.cs
- JournalEntryStack.cs
- ListManagerBindingsCollection.cs
- AssemblyName.cs
- DecoderBestFitFallback.cs
- ObjectStateManager.cs
- Vector.cs
- SRGSCompiler.cs
- ApplyImportsAction.cs
- SqlReorderer.cs
- UniformGrid.cs
- XmlCountingReader.cs
- CustomGrammar.cs
- MonikerUtility.cs
- ClosableStream.cs
- ProcessModelSection.cs
- Single.cs
- PointCollectionConverter.cs
- CompareValidator.cs
- NamespaceInfo.cs
- FunctionUpdateCommand.cs
- TextRangeEdit.cs
- SubMenuStyle.cs
- DiscardableAttribute.cs
- ProxySimple.cs
- SoapObjectInfo.cs
- UrlMappingsSection.cs
- MouseEventArgs.cs
- SoapAttributes.cs
- PointAnimation.cs
- CompilationLock.cs
- followingsibling.cs
- DataPagerFieldItem.cs