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
- ScriptManager.cs
- PageCatalogPart.cs
- HandlerWithFactory.cs
- PropertyValueChangedEvent.cs
- CustomValidator.cs
- SqlCaseSimplifier.cs
- XmlHierarchyData.cs
- SafeNativeMemoryHandle.cs
- CheckBox.cs
- _NTAuthentication.cs
- SafeReversePInvokeHandle.cs
- BitmapEffectGeneralTransform.cs
- FileEnumerator.cs
- _HeaderInfo.cs
- ProviderBase.cs
- WsatRegistrationHeader.cs
- ISAPIRuntime.cs
- DataGridViewColumnCollection.cs
- AttributeQuery.cs
- ConditionalAttribute.cs
- TextServicesPropertyRanges.cs
- EntityDataSourceChangingEventArgs.cs
- DecimalStorage.cs
- FolderNameEditor.cs
- RegisteredArrayDeclaration.cs
- DynamicRendererThreadManager.cs
- ProgressBar.cs
- ExtenderProvidedPropertyAttribute.cs
- AuthorizationRuleCollection.cs
- SqlStatistics.cs
- WindowPattern.cs
- SelectionEditor.cs
- SessionStateContainer.cs
- KeyValueInternalCollection.cs
- XmlILAnnotation.cs
- PanelStyle.cs
- NotifyInputEventArgs.cs
- MessageQueueEnumerator.cs
- DebugHandleTracker.cs
- cache.cs
- BaseResourcesBuildProvider.cs
- SerializationException.cs
- EventWaitHandle.cs
- PropertyGridEditorPart.cs
- DbConnectionStringBuilder.cs
- TouchesCapturedWithinProperty.cs
- SerializerWriterEventHandlers.cs
- SemanticValue.cs
- LinkedDataMemberFieldEditor.cs
- ToolStripContextMenu.cs
- RenderTargetBitmap.cs
- LoggedException.cs
- LifetimeServices.cs
- FileReservationCollection.cs
- XD.cs
- XPathDocumentIterator.cs
- FileSystemInfo.cs
- PropertyCollection.cs
- BamlTreeNode.cs
- EntityContainer.cs
- ObjectItemCachedAssemblyLoader.cs
- StringExpressionSet.cs
- AutomationElement.cs
- SystemPens.cs
- ConfigXmlText.cs
- ImpersonateTokenRef.cs
- Int32Converter.cs
- BooleanStorage.cs
- infer.cs
- FacetChecker.cs
- DelayedRegex.cs
- FormViewUpdateEventArgs.cs
- _HeaderInfo.cs
- PagerSettings.cs
- DefaultValueAttribute.cs
- TabControl.cs
- LoginCancelEventArgs.cs
- ProfileManager.cs
- SelectionProviderWrapper.cs
- Internal.cs
- XmlSchemaSimpleTypeList.cs
- ToolStripPanel.cs
- XslVisitor.cs
- InputLanguage.cs
- ComponentGuaranteesAttribute.cs
- CompilerGlobalScopeAttribute.cs
- SpellCheck.cs
- PersonalizationStateInfoCollection.cs
- AttachedPropertyInfo.cs
- LocatorPartList.cs
- SizeFConverter.cs
- RedirectionProxy.cs
- OneOfTypeConst.cs
- SiteMapDataSource.cs
- PeerNearMe.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- XmlCharCheckingWriter.cs
- MessageQueue.cs
- ButtonDesigner.cs
- PageWrapper.cs