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
- PackageStore.cs
- TailCallAnalyzer.cs
- SafeCertificateStore.cs
- RawStylusInputReport.cs
- EntityCollection.cs
- DesignerDataView.cs
- FlowchartDesignerCommands.cs
- MultilineStringConverter.cs
- ProtectedProviderSettings.cs
- XslVisitor.cs
- ArrayHelper.cs
- ContentPropertyAttribute.cs
- TextServicesCompartment.cs
- RegexCaptureCollection.cs
- CurrentChangingEventArgs.cs
- ObjRef.cs
- SourceLocation.cs
- LifetimeServices.cs
- StatusBarAutomationPeer.cs
- WindowAutomationPeer.cs
- KeyGesture.cs
- HostExecutionContextManager.cs
- AccessedThroughPropertyAttribute.cs
- ProxyAttribute.cs
- PluggableProtocol.cs
- ZoneButton.cs
- DesignerSerializationVisibilityAttribute.cs
- CommandID.cs
- SqlTypesSchemaImporter.cs
- TextServicesContext.cs
- CompressEmulationStream.cs
- TablePatternIdentifiers.cs
- Group.cs
- IOThreadTimer.cs
- ComponentSerializationService.cs
- BaseUriHelper.cs
- FileLoadException.cs
- OrCondition.cs
- CustomErrorCollection.cs
- ProfessionalColors.cs
- CodeIdentifiers.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- CompilationUtil.cs
- hresults.cs
- MissingMemberException.cs
- StylusPointProperty.cs
- Rotation3D.cs
- Pool.cs
- SourceItem.cs
- SqlNodeAnnotation.cs
- TraceListener.cs
- DataControlLinkButton.cs
- ExpressionBuilder.cs
- InputLangChangeRequestEvent.cs
- ColumnBinding.cs
- TdsRecordBufferSetter.cs
- GeometryCombineModeValidation.cs
- AuthenticationSection.cs
- CompleteWizardStep.cs
- ScaleTransform.cs
- ProtectedConfiguration.cs
- RequestCacheValidator.cs
- Model3DGroup.cs
- XmlTextWriter.cs
- DataGridViewCellConverter.cs
- SchemaMapping.cs
- SystemWebCachingSectionGroup.cs
- SettingsSavedEventArgs.cs
- ProofTokenCryptoHandle.cs
- DataQuery.cs
- SamlAttribute.cs
- SizeConverter.cs
- TimeSpanValidator.cs
- RequestCacheManager.cs
- FrameSecurityDescriptor.cs
- StateElementCollection.cs
- RichTextBox.cs
- NTAccount.cs
- EncryptedKeyIdentifierClause.cs
- DynamicILGenerator.cs
- DataListItem.cs
- DirectoryGroupQuery.cs
- ContextStack.cs
- ModifierKeysValueSerializer.cs
- PrintDocument.cs
- KeyGesture.cs
- FontEmbeddingManager.cs
- XmlObjectSerializer.cs
- ComboBox.cs
- ImageBrush.cs
- Int32RectConverter.cs
- DoWorkEventArgs.cs
- EventlogProvider.cs
- Label.cs
- ZipIOExtraField.cs
- Size.cs
- XmlnsDefinitionAttribute.cs
- WebPartCloseVerb.cs
- CallbackValidatorAttribute.cs
- SingleAnimation.cs