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
- TimeoutException.cs
- DragDrop.cs
- TypeResolver.cs
- DefaultAuthorizationContext.cs
- CapabilitiesPattern.cs
- ChangeConflicts.cs
- HScrollBar.cs
- TcpConnectionPool.cs
- PartitionResolver.cs
- DataBindEngine.cs
- Win32.cs
- CallSiteBinder.cs
- BrowserTree.cs
- ToolStripContainer.cs
- GradientSpreadMethodValidation.cs
- ParsedAttributeCollection.cs
- MemberMaps.cs
- ImageDrawing.cs
- ReferencedType.cs
- KeySplineConverter.cs
- BufferedWebEventProvider.cs
- HttpProfileBase.cs
- TextParagraphCache.cs
- KeyMatchBuilder.cs
- NumericUpDown.cs
- SplitterPanel.cs
- HtmlTable.cs
- DatatypeImplementation.cs
- VisualBasicSettingsHandler.cs
- CodeTypeOfExpression.cs
- ExpressionNode.cs
- DecoderNLS.cs
- WebPartsSection.cs
- TextParagraph.cs
- LocalBuilder.cs
- TableLayoutStyleCollection.cs
- NamespaceDecl.cs
- XPathAncestorQuery.cs
- ApplicationServiceManager.cs
- MasterPageBuildProvider.cs
- BrowserDefinition.cs
- VisualTreeHelper.cs
- DSACryptoServiceProvider.cs
- MeasurementDCInfo.cs
- PropertyToken.cs
- AutomationPeer.cs
- DataGridViewTopLeftHeaderCell.cs
- EpmCustomContentSerializer.cs
- _AuthenticationState.cs
- StackBuilderSink.cs
- XsdValidatingReader.cs
- TableStyle.cs
- XmlSchemaAll.cs
- MissingMethodException.cs
- XmlExtensionFunction.cs
- TreeIterators.cs
- InternalConfigEventArgs.cs
- BoundsDrawingContextWalker.cs
- Pkcs7Recipient.cs
- RadioButtonPopupAdapter.cs
- ModelTreeEnumerator.cs
- ColorContext.cs
- XmlSchemaRedefine.cs
- MaskInputRejectedEventArgs.cs
- ActivityXRefConverter.cs
- FixedTextView.cs
- Set.cs
- CompoundFileReference.cs
- ClassGenerator.cs
- SByteStorage.cs
- FileDialogPermission.cs
- DispatcherTimer.cs
- AdCreatedEventArgs.cs
- ObfuscationAttribute.cs
- SecuritySessionClientSettings.cs
- PointHitTestResult.cs
- PropertyBuilder.cs
- XmlnsDictionary.cs
- WpfPayload.cs
- VirtualDirectoryMapping.cs
- ClosureBinding.cs
- ContainerUtilities.cs
- PlatformCulture.cs
- DocumentSchemaValidator.cs
- SamlAssertionKeyIdentifierClause.cs
- BuildProviderCollection.cs
- ServicePointManagerElement.cs
- SafeTimerHandle.cs
- ActivityExecutionContext.cs
- DbProviderFactory.cs
- SparseMemoryStream.cs
- Literal.cs
- DataSourceControl.cs
- RevocationPoint.cs
- ObjectDataSourceMethodEditor.cs
- TextClipboardData.cs
- ApplicationInterop.cs
- WindowsFont.cs
- ReachPrintTicketSerializer.cs
- DataSourceCache.cs