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
- MaskDescriptor.cs
- MenuItemBindingCollection.cs
- ProcessRequestArgs.cs
- PartialTrustVisibleAssemblyCollection.cs
- EventSourceCreationData.cs
- MetadataImporterQuotas.cs
- EdmSchemaError.cs
- XPathNavigatorReader.cs
- ReadOnlyState.cs
- ValidatedControlConverter.cs
- StringInfo.cs
- XmlSchemaIdentityConstraint.cs
- PreApplicationStartMethodAttribute.cs
- SmtpCommands.cs
- Events.cs
- GetWinFXPath.cs
- UserControlParser.cs
- DecoderNLS.cs
- PermissionSet.cs
- UIHelper.cs
- EraserBehavior.cs
- CodeEntryPointMethod.cs
- WindowVisualStateTracker.cs
- DataSetMappper.cs
- XPathArrayIterator.cs
- Assembly.cs
- IImplicitResourceProvider.cs
- OptionUsage.cs
- SrgsRule.cs
- PagesChangedEventArgs.cs
- ShaderEffect.cs
- DataObjectEventArgs.cs
- WindowsListViewItemStartMenu.cs
- ResourceWriter.cs
- NetSectionGroup.cs
- _CacheStreams.cs
- SystemSounds.cs
- DynamicResourceExtension.cs
- BaseParser.cs
- StreamResourceInfo.cs
- ExtractorMetadata.cs
- EventPrivateKey.cs
- TransformDescriptor.cs
- SafeEventLogWriteHandle.cs
- XmlSchemaSimpleTypeList.cs
- CacheSection.cs
- formatter.cs
- FileRecordSequenceHelper.cs
- DeferredRunTextReference.cs
- WebPartTracker.cs
- SqlInfoMessageEvent.cs
- UIntPtr.cs
- BaseCodePageEncoding.cs
- CompatibleIComparer.cs
- HMAC.cs
- log.cs
- SqlXmlStorage.cs
- ModifiableIteratorCollection.cs
- TypedDatasetGenerator.cs
- XmlIterators.cs
- CompoundFileIOPermission.cs
- ProjectionPathSegment.cs
- EmptyTextWriter.cs
- DataGridPagerStyle.cs
- MDIWindowDialog.cs
- CompoundFileStorageReference.cs
- WebServiceFaultDesigner.cs
- CompiledQuery.cs
- ReaderWriterLockWrapper.cs
- AdvancedBindingEditor.cs
- LineServicesCallbacks.cs
- DataGridColumnDropSeparator.cs
- ServiceSecurityAuditElement.cs
- OuterProxyWrapper.cs
- SHA384Managed.cs
- TraceContextEventArgs.cs
- TreeView.cs
- UserMapPath.cs
- WindowsGraphicsWrapper.cs
- LinkButton.cs
- ConfigXmlReader.cs
- HtmlInputButton.cs
- InstanceHandleReference.cs
- PersonalizablePropertyEntry.cs
- SecurityPermission.cs
- FactoryGenerator.cs
- XmlReaderDelegator.cs
- ListViewUpdateEventArgs.cs
- ServiceNameElement.cs
- DataGridViewCellStyleConverter.cs
- DetailsViewCommandEventArgs.cs
- Semaphore.cs
- iisPickupDirectory.cs
- DataContractSerializer.cs
- DialogWindow.cs
- DataFormats.cs
- MD5CryptoServiceProvider.cs
- ImageUrlEditor.cs
- Timer.cs
- AutomationElement.cs