3 // Copyright (c) Microsoft Corporation. All rights reserved.
6 //+----------------------------------------------------------------------------
8 // File: ClientSponsor.cs
10 // Contents: Agent for keeping Server Object's lifetime in [....] with a client's lifetime
12 // History: 8/9/00 <EMAIL>[....]</EMAIL> Created
14 //+----------------------------------------------------------------------------
16 namespace System.Runtime.Remoting.Lifetime
19 using System.Collections;
20 using System.Security.Permissions;
22 [System.Security.SecurityCritical] // auto-generated_required
23 [SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags=SecurityPermissionFlag.Infrastructure)]
24 [System.Runtime.InteropServices.ComVisible(true)]
25 public class ClientSponsor : MarshalByRefObject, ISponsor
27 private Hashtable sponsorTable = new Hashtable(10);
28 private TimeSpan m_renewalTime = TimeSpan.FromMinutes(2);
30 public ClientSponsor()
34 public ClientSponsor(TimeSpan renewalTime)
36 this.m_renewalTime = renewalTime;
39 public TimeSpan RenewalTime
41 get{ return m_renewalTime;}
42 set{ m_renewalTime = value;}
45 [System.Security.SecurityCritical] // auto-generated
46 public bool Register(MarshalByRefObject obj)
48 BCLDebug.Trace("REMOTE", "ClientSponsor Register "+obj);
49 ILease lease = (ILease)obj.GetLifetimeService();
56 sponsorTable[obj] = lease;
61 [System.Security.SecurityCritical] // auto-generated
62 public void Unregister(MarshalByRefObject obj)
64 BCLDebug.Trace("REMOTE", "ClientSponsor Unregister "+obj);
69 lease = (ILease)sponsorTable[obj];
72 lease.Unregister(this);
76 [System.Security.SecurityCritical]
77 public TimeSpan Renewal(ILease lease)
79 BCLDebug.Trace("REMOTE", "ClientSponsor Renewal "+m_renewalTime);
83 [System.Security.SecurityCritical] // auto-generated
86 BCLDebug.Trace("REMOTE","ClientSponsor Close");
89 IDictionaryEnumerator e = sponsorTable.GetEnumerator();
91 ((ILease)e.Value).Unregister(this);
96 // Don't create a lease on the sponsor
97 [System.Security.SecurityCritical]
98 public override Object InitializeLifetimeService()
103 [System.Security.SecuritySafeCritical] // finalizers should be treated as safe
106 BCLDebug.Trace("REMOTE","ClientSponsor Finalize");