Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1305376 / 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; } [System.Security.SecurityCritical] // auto-generated 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; } [System.Security.SecurityCritical] // auto-generated 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
- CultureInfoConverter.cs
- _LoggingObject.cs
- InstanceData.cs
- RunClient.cs
- HandleRef.cs
- ScopelessEnumAttribute.cs
- XmlComplianceUtil.cs
- safex509handles.cs
- ContentHostHelper.cs
- RecommendedAsConfigurableAttribute.cs
- SqlDataSourceCustomCommandEditor.cs
- SqlDataSourceEnumerator.cs
- BitmapCacheBrush.cs
- AssociationSetMetadata.cs
- ByteAnimationUsingKeyFrames.cs
- BitStream.cs
- HtmlControl.cs
- TableItemStyle.cs
- TypedDataSourceCodeGenerator.cs
- Trace.cs
- CustomAttribute.cs
- AnonymousIdentificationModule.cs
- UITypeEditor.cs
- SingleBodyParameterMessageFormatter.cs
- CompilerScopeManager.cs
- MemberCollection.cs
- Task.cs
- ListenerPerfCounters.cs
- XmlSchemaAny.cs
- CreateDataSourceDialog.cs
- FtpWebResponse.cs
- FormParameter.cs
- Method.cs
- AuthenticationConfig.cs
- WebPartMenu.cs
- NumberEdit.cs
- X509Certificate2Collection.cs
- Dispatcher.cs
- PartManifestEntry.cs
- SettingsBindableAttribute.cs
- ScriptManagerProxy.cs
- TextTreeRootTextBlock.cs
- ThreadStartException.cs
- DataColumn.cs
- DependencyPropertyAttribute.cs
- DbSetClause.cs
- DataGridViewColumnTypeEditor.cs
- HyperlinkAutomationPeer.cs
- PoisonMessageException.cs
- DataListComponentEditor.cs
- DropSource.cs
- DbReferenceCollection.cs
- ThicknessAnimationBase.cs
- BitmapEffectInput.cs
- UICuesEvent.cs
- ExternalFile.cs
- ListControlConvertEventArgs.cs
- RegexBoyerMoore.cs
- Delegate.cs
- NotFiniteNumberException.cs
- ReliabilityContractAttribute.cs
- CachedPathData.cs
- StringResourceManager.cs
- SizeLimitedCache.cs
- XPathMultyIterator.cs
- DataGridViewComboBoxCell.cs
- MemoryRecordBuffer.cs
- MultiTrigger.cs
- DoubleLinkListEnumerator.cs
- Double.cs
- LinkButton.cs
- DataGridViewComboBoxEditingControl.cs
- ExpressionLexer.cs
- InstanceLockException.cs
- OpenFileDialog.cs
- COSERVERINFO.cs
- sqlnorm.cs
- Geometry3D.cs
- IndividualDeviceConfig.cs
- SlipBehavior.cs
- Pointer.cs
- MemberMaps.cs
- Canonicalizers.cs
- SchemaImporterExtensionElementCollection.cs
- SelectionList.cs
- SafeTimerHandle.cs
- OdbcRowUpdatingEvent.cs
- ByteArrayHelperWithString.cs
- XmlSchemaComplexContent.cs
- View.cs
- CompilationRelaxations.cs
- HttpStreamMessageEncoderFactory.cs
- BookmarkResumptionRecord.cs
- DSASignatureFormatter.cs
- EntityDataSourceChangingEventArgs.cs
- XmlTypeAttribute.cs
- WebSysDefaultValueAttribute.cs
- Literal.cs
- FilterException.cs
- ExtendedProtectionPolicyTypeConverter.cs