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
- PassportAuthenticationModule.cs
- AssociationTypeEmitter.cs
- HierarchicalDataBoundControlAdapter.cs
- ThreadStaticAttribute.cs
- Model3D.cs
- SpeakCompletedEventArgs.cs
- InputLanguageManager.cs
- IUnknownConstantAttribute.cs
- WorkflowDurableInstance.cs
- ProcessThreadCollection.cs
- ThicknessAnimationBase.cs
- _PooledStream.cs
- LicenseException.cs
- DataGridViewRowPostPaintEventArgs.cs
- BoolExpression.cs
- CodeThrowExceptionStatement.cs
- NewItemsContextMenuStrip.cs
- MultiSelector.cs
- QilInvokeLateBound.cs
- CircleEase.cs
- StringWriter.cs
- MsdtcWrapper.cs
- NameSpaceExtractor.cs
- TextParagraph.cs
- AdjustableArrowCap.cs
- RemoteX509Token.cs
- CodeDomConfigurationHandler.cs
- XPathSingletonIterator.cs
- Pair.cs
- NavigationService.cs
- Propagator.Evaluator.cs
- RawKeyboardInputReport.cs
- DefaultConfirmation.cs
- SelectorItemAutomationPeer.cs
- ToolStripControlHost.cs
- PageRequestManager.cs
- _AutoWebProxyScriptEngine.cs
- CodeValidator.cs
- Facet.cs
- EntityDataSourceViewSchema.cs
- StdRegProviderWrapper.cs
- ExceptionAggregator.cs
- MultiBinding.cs
- SqlNodeTypeOperators.cs
- ContentValidator.cs
- RangeBase.cs
- FreezableOperations.cs
- XmlDocumentSerializer.cs
- WinEventTracker.cs
- MexHttpBindingCollectionElement.cs
- SkinBuilder.cs
- WCFBuildProvider.cs
- StorageFunctionMapping.cs
- MergeFailedEvent.cs
- XmlSerializerFactory.cs
- SoapObjectWriter.cs
- CodeTypeConstructor.cs
- AppDomainCompilerProxy.cs
- CodeDelegateInvokeExpression.cs
- SizeAnimationBase.cs
- PageCodeDomTreeGenerator.cs
- Listener.cs
- InlineUIContainer.cs
- UnaryNode.cs
- ActivityInstance.cs
- ProviderConnectionPoint.cs
- isolationinterop.cs
- LabelLiteral.cs
- PagerSettings.cs
- AccessibleObject.cs
- XPathDocumentIterator.cs
- ContourSegment.cs
- CompressedStack.cs
- ScriptComponentDescriptor.cs
- DataObject.cs
- MultiDataTrigger.cs
- PrtCap_Base.cs
- TopClause.cs
- ThaiBuddhistCalendar.cs
- SqlMethodAttribute.cs
- DataBoundControl.cs
- UniqueIdentifierService.cs
- StringReader.cs
- DiscoveryDocument.cs
- CaseInsensitiveOrdinalStringComparer.cs
- HtmlTableCell.cs
- ServiceEndpoint.cs
- DataGridViewBindingCompleteEventArgs.cs
- CryptoKeySecurity.cs
- DesignerRegionMouseEventArgs.cs
- XmlValidatingReader.cs
- QueryStringParameter.cs
- PrintPageEvent.cs
- ToolStripContentPanelRenderEventArgs.cs
- HttpServerProtocol.cs
- TextEditorTables.cs
- WebPartManager.cs
- GenericWebPart.cs
- PipeSecurity.cs
- AttributeAction.cs