Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1 / 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; } 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; } 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
- UInt16.cs
- IntSecurity.cs
- BinaryMessageFormatter.cs
- PnrpPermission.cs
- DynamicDocumentPaginator.cs
- CaseInsensitiveHashCodeProvider.cs
- HtmlCommandAdapter.cs
- ClientUrlResolverWrapper.cs
- SoapWriter.cs
- ShaperBuffers.cs
- C14NUtil.cs
- Point3DCollection.cs
- ScrollContentPresenter.cs
- EnumMemberAttribute.cs
- HostingEnvironmentWrapper.cs
- LinkClickEvent.cs
- X500Name.cs
- UDPClient.cs
- OptionUsage.cs
- WmlMobileTextWriter.cs
- AnnotationService.cs
- XmlDocumentSurrogate.cs
- SharedDp.cs
- ServiceHostFactory.cs
- Color.cs
- ControlBuilderAttribute.cs
- ContentAlignmentEditor.cs
- SchemaNotation.cs
- QuaternionValueSerializer.cs
- MediaContextNotificationWindow.cs
- ExpressionHelper.cs
- CreateUserWizard.cs
- MemberCollection.cs
- ObjectViewQueryResultData.cs
- DurationConverter.cs
- HostExecutionContextManager.cs
- ValidatingReaderNodeData.cs
- QilXmlReader.cs
- DataGridViewSelectedRowCollection.cs
- PolyBezierSegment.cs
- AdditionalEntityFunctions.cs
- WrapPanel.cs
- coordinatorscratchpad.cs
- TypeRestriction.cs
- Events.cs
- TreeViewItem.cs
- ExpressionContext.cs
- SubstitutionResponseElement.cs
- WindowsAuthenticationEventArgs.cs
- NavigateEvent.cs
- ColorConverter.cs
- FormViewUpdatedEventArgs.cs
- GroupJoinQueryOperator.cs
- Keyboard.cs
- EDesignUtil.cs
- DropDownList.cs
- JavascriptCallbackBehaviorAttribute.cs
- CodeAssignStatement.cs
- ConnectionManagementElementCollection.cs
- ZoneMembershipCondition.cs
- PixelShader.cs
- TextBoxBase.cs
- HtmlControlAdapter.cs
- PropertyEmitter.cs
- WebHttpSecurityElement.cs
- MergablePropertyAttribute.cs
- TransferMode.cs
- EntityDataSourceMemberPath.cs
- BuiltInExpr.cs
- xsdvalidator.cs
- ViewPort3D.cs
- RemotingServices.cs
- StrokeNodeEnumerator.cs
- RoutedPropertyChangedEventArgs.cs
- HttpHostedTransportConfiguration.cs
- StatusBarDrawItemEvent.cs
- OrderByExpression.cs
- BindingList.cs
- TcpDuplicateContext.cs
- CmsInterop.cs
- WorkBatch.cs
- TreeNodeEventArgs.cs
- TrustLevel.cs
- MessageAction.cs
- IPPacketInformation.cs
- DesignerCategoryAttribute.cs
- TextAnchor.cs
- ConnectionPoint.cs
- TransformConverter.cs
- ToolBarPanel.cs
- FrameworkElement.cs
- BinaryMethodMessage.cs
- HttpConfigurationSystem.cs
- COM2IDispatchConverter.cs
- dataprotectionpermission.cs
- BehaviorDragDropEventArgs.cs
- DataTableNewRowEvent.cs
- XmlSchemaSimpleContentRestriction.cs
- ResourceCategoryAttribute.cs
- DbProviderFactories.cs