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
- PropertyPathConverter.cs
- BamlRecords.cs
- CqlIdentifiers.cs
- StaticSiteMapProvider.cs
- HttpCapabilitiesEvaluator.cs
- AccessedThroughPropertyAttribute.cs
- CornerRadius.cs
- DataContractSerializer.cs
- SqlFacetAttribute.cs
- RequestCacheManager.cs
- OrthographicCamera.cs
- MultiAsyncResult.cs
- DesignerOptionService.cs
- CfgParser.cs
- SessionEndingCancelEventArgs.cs
- DictionaryGlobals.cs
- DataTableTypeConverter.cs
- EntityContainer.cs
- SQLMoney.cs
- DataGridColumnHeadersPresenter.cs
- OdbcReferenceCollection.cs
- GridViewUpdateEventArgs.cs
- PasswordDeriveBytes.cs
- HttpListenerRequest.cs
- ViewKeyConstraint.cs
- ViewManager.cs
- Char.cs
- CollectionView.cs
- SeekableMessageNavigator.cs
- ObjectStateEntryDbDataRecord.cs
- RemoteWebConfigurationHostStream.cs
- VersionUtil.cs
- IntSecurity.cs
- ValidateNames.cs
- ListItemConverter.cs
- Expression.cs
- WebPartsSection.cs
- MulticastDelegate.cs
- SizeF.cs
- X509Certificate.cs
- TypeInfo.cs
- HtmlEncodedRawTextWriter.cs
- AccessDataSource.cs
- Crc32Helper.cs
- SqlProviderManifest.cs
- ObjectListCommandsPage.cs
- TypeListConverter.cs
- CanonicalFontFamilyReference.cs
- Size.cs
- BindingExpression.cs
- StringStorage.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- FormView.cs
- InkCanvasInnerCanvas.cs
- HtmlValidationSummaryAdapter.cs
- ErrorProvider.cs
- VoiceInfo.cs
- HttpListenerPrefixCollection.cs
- XmlNodeComparer.cs
- PropertyMetadata.cs
- InfoCardProofToken.cs
- Label.cs
- PlatformCulture.cs
- ProfileSettings.cs
- HeaderedItemsControl.cs
- Action.cs
- HtmlLink.cs
- StreamInfo.cs
- arc.cs
- Thread.cs
- ActiveXHost.cs
- ByteAnimationBase.cs
- TypeDescriptionProvider.cs
- InputMethodStateChangeEventArgs.cs
- Rijndael.cs
- XmlValidatingReader.cs
- SqlTypeSystemProvider.cs
- parserscommon.cs
- TextBoxRenderer.cs
- CultureMapper.cs
- SqlWorkflowInstanceStore.cs
- TextServicesProperty.cs
- PeerHopCountAttribute.cs
- VideoDrawing.cs
- QuadraticBezierSegment.cs
- PropertyValueChangedEvent.cs
- SourceCollection.cs
- OleDbInfoMessageEvent.cs
- OutputCacheSettingsSection.cs
- CategoryGridEntry.cs
- SocketAddress.cs
- FaultContractInfo.cs
- DSASignatureDeformatter.cs
- Lasso.cs
- ModuleBuilderData.cs
- DataGridViewCellStyleChangedEventArgs.cs
- ComponentConverter.cs
- ChangeNode.cs
- XhtmlBasicPanelAdapter.cs
- UnsafeNativeMethods.cs