Code:
/ 4.0 / 4.0 / 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[....] 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
- ServiceMetadataExtension.cs
- DNS.cs
- MarshalByValueComponent.cs
- WebBrowserSiteBase.cs
- Stylesheet.cs
- DataGridViewRowCollection.cs
- ControlPaint.cs
- RenderingBiasValidation.cs
- MessageContractMemberAttribute.cs
- XmlNamespaceMapping.cs
- Aggregates.cs
- AnnotationComponentChooser.cs
- DetailsViewDeletedEventArgs.cs
- InstanceLockTracking.cs
- ProcessThread.cs
- Pointer.cs
- HyperLink.cs
- XmlSerializerAssemblyAttribute.cs
- HyperLinkField.cs
- XmlWrappingWriter.cs
- DbgUtil.cs
- ConnectionOrientedTransportBindingElement.cs
- XamlFigureLengthSerializer.cs
- UnionExpr.cs
- MultipartIdentifier.cs
- PolyLineSegment.cs
- RealProxy.cs
- BitmapSizeOptions.cs
- DataAdapter.cs
- WebPartAuthorizationEventArgs.cs
- PointAnimationBase.cs
- VectorAnimation.cs
- TypefaceCollection.cs
- ProfileEventArgs.cs
- DataBindingExpressionBuilder.cs
- StyleSelector.cs
- EmptyStringExpandableObjectConverter.cs
- XmlMemberMapping.cs
- MatrixCamera.cs
- XslTransform.cs
- CommonProperties.cs
- ReadOnlyActivityGlyph.cs
- DbProviderConfigurationHandler.cs
- OrderByBuilder.cs
- WebControlParameterProxy.cs
- formatstringdialog.cs
- XamlGridLengthSerializer.cs
- SharedDp.cs
- DrawingContextDrawingContextWalker.cs
- AccessViolationException.cs
- CompiledELinqQueryState.cs
- HttpHandlerActionCollection.cs
- ToolStripPanelRenderEventArgs.cs
- MulticastDelegate.cs
- Qualifier.cs
- XmlFormatReaderGenerator.cs
- OleStrCAMarshaler.cs
- Image.cs
- HttpModulesSection.cs
- InvokeBinder.cs
- AssertUtility.cs
- ObservableCollection.cs
- FileAuthorizationModule.cs
- WinFormsSpinner.cs
- CustomAttribute.cs
- ErrorHandler.cs
- WS2007FederationHttpBindingElement.cs
- ScrollPatternIdentifiers.cs
- RelatedCurrencyManager.cs
- DesigntimeLicenseContextSerializer.cs
- Message.cs
- BooleanToVisibilityConverter.cs
- DecimalStorage.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- WinFormsUtils.cs
- XmlElementList.cs
- MarshalByRefObject.cs
- XmlCountingReader.cs
- DynamicRendererThreadManager.cs
- ClientSession.cs
- TextTreeObjectNode.cs
- SliderAutomationPeer.cs
- DocumentApplicationJournalEntry.cs
- KeySpline.cs
- httpapplicationstate.cs
- ControlUtil.cs
- StrongNameUtility.cs
- DesignerAdapterAttribute.cs
- BoolExpr.cs
- TreeNode.cs
- ContextProperty.cs
- ArgumentOutOfRangeException.cs
- TrustLevelCollection.cs
- Slider.cs
- CompModSwitches.cs
- PartitionerStatic.cs
- ListQueryResults.cs
- DbExpressionBuilder.cs
- DataGridViewTextBoxEditingControl.cs
- KeyEvent.cs