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
- FixedSOMFixedBlock.cs
- DrawTreeNodeEventArgs.cs
- FullTextState.cs
- TextContainerHelper.cs
- XmlnsCache.cs
- WebExceptionStatus.cs
- ColorKeyFrameCollection.cs
- IndexOutOfRangeException.cs
- EntityUtil.cs
- FontDriver.cs
- SafeFindHandle.cs
- NotImplementedException.cs
- WindowsListViewItemStartMenu.cs
- DirectoryObjectSecurity.cs
- ProxyWebPart.cs
- DefinitionBase.cs
- Timer.cs
- UntypedNullExpression.cs
- SemanticResultKey.cs
- FunctionUpdateCommand.cs
- FixUp.cs
- IChannel.cs
- QilCloneVisitor.cs
- SortQuery.cs
- CounterCreationDataCollection.cs
- JavascriptCallbackBehaviorAttribute.cs
- AttachedAnnotationChangedEventArgs.cs
- hwndwrapper.cs
- TextPatternIdentifiers.cs
- DataServiceRequestException.cs
- KeysConverter.cs
- Registry.cs
- FtpWebResponse.cs
- COM2IProvidePropertyBuilderHandler.cs
- TypeForwardedToAttribute.cs
- CqlParserHelpers.cs
- DebugHandleTracker.cs
- ApplicationDirectory.cs
- HostedElements.cs
- FragmentQuery.cs
- FormatConvertedBitmap.cs
- XmlBinaryReader.cs
- MatrixUtil.cs
- CommandBindingCollection.cs
- MetadataPropertyvalue.cs
- LocatorGroup.cs
- XmlSchemaFacet.cs
- TypedServiceChannelBuilder.cs
- LinkGrep.cs
- SelfIssuedAuthRSAPKCS1SignatureDeformatter.cs
- XmlProcessingInstruction.cs
- DateTimeFormatInfoScanner.cs
- SettingsSavedEventArgs.cs
- SetStoryboardSpeedRatio.cs
- UDPClient.cs
- FrameworkTemplate.cs
- FieldNameLookup.cs
- ClusterSafeNativeMethods.cs
- webproxy.cs
- BitmapCodecInfoInternal.cs
- DictionarySurrogate.cs
- WebPartVerb.cs
- Transform.cs
- ActivityBuilder.cs
- TableTextElementCollectionInternal.cs
- SqlCacheDependency.cs
- DrawingAttributeSerializer.cs
- RadioButton.cs
- PropertyPathConverter.cs
- FloaterParaClient.cs
- ToolStripStatusLabel.cs
- MobileListItemCollection.cs
- ImageDrawing.cs
- ResXResourceSet.cs
- AssemblyHelper.cs
- DefaultMemberAttribute.cs
- EncryptedReference.cs
- HttpWriter.cs
- SqlProviderUtilities.cs
- FixedPageStructure.cs
- PictureBox.cs
- DispatcherSynchronizationContext.cs
- WhereQueryOperator.cs
- TextEditorSpelling.cs
- StreamGeometry.cs
- OleDbDataAdapter.cs
- PathNode.cs
- PathFigureCollection.cs
- WebPartActionVerb.cs
- EntityDataSourceColumn.cs
- ControlPropertyNameConverter.cs
- IFlowDocumentViewer.cs
- EntityDataSourceDesignerHelper.cs
- ByteStorage.cs
- ConnectionConsumerAttribute.cs
- StackSpiller.cs
- LayoutEngine.cs
- SmtpReplyReader.cs
- ToolStripItemClickedEventArgs.cs
- FlowDocumentView.cs