private void SetLeases() { _clientSponsor?.Close(); _clientSponsor = new ClientSponsor(TimeSpan.MaxValue); _clientSponsor.Register((MarshalByRefObject)_missionPlannerInterfaces.CurrentState); //_clientSponsor.Register((MarshalByRefObject) _missionPlannerInterfaces.FlightComms); _clientSponsor.Register((MarshalByRefObject)_missionPlannerInterfaces.MissionPlanner); var lease = (ILease)_clientSponsor.InitializeLifetimeService(); _clientSponsor.Renewal(lease); }
public void BuildDocument() { var sponsor = new ClientSponsor(); if (_listener != null) { Logger.LogLevelThreshold = _logLevel; Logger.RegisterListener(_listener); sponsor.Register(_listener); } try { try { BuildDocument(_config, _manager, _baseDirectory, _outputDirectory, _pluginDirectory); } catch (Exception e) when(e is DocfxException || e is DocumentException) { throw new DocfxException(e.Message); } catch (Exception e) { throw new DocfxException(e.ToString()); } } finally { sponsor.Close(); } }
public void BuildDocument() { var sponsor = new ClientSponsor(); if (_listener != null) { Logger.LogLevelThreshold = _logLevel; Logger.RegisterListener(_listener); sponsor.Register(_listener); } try { try { BuildDocument(_config, _manager, _baseDirectory, _outputDirectory, _pluginDirectory); } catch (Exception e) { // For non-serializable exception, wrap it and throw docfx exception instead throw new DocfxException(e.ToString()); } } finally { sponsor.Close(); } }
public static void Sponsor(ServerObject obj) { ClientSponsor sponsor = new ClientSponsor(); sponsor.RenewalTime = TimeSpan.FromMinutes(2); sponsor.Register(obj); }
static void Main() { // Register a channel. TcpChannel myChannel = new TcpChannel(); ChannelServices.RegisterChannel(myChannel); RemotingConfiguration.RegisterActivatedClientType( typeof(HelloService), "tcp://localhost:8085/"); // Get the remote object. HelloService myService = new HelloService(); // Get a sponsor for renewal of time. ClientSponsor mySponsor = new ClientSponsor(); // Register the service with sponsor. mySponsor.Register(myService); // Set renewaltime. mySponsor.RenewalTime = TimeSpan.FromMinutes(2); // Renew the lease. ILease myLease = (ILease)mySponsor.InitializeLifetimeService(); TimeSpan myTime = mySponsor.Renewal(myLease); Console.WriteLine("Renewed time in minutes is " + myTime.Minutes.ToString()); // Call the remote method. Console.WriteLine(myService.HelloMethod("World")); // Unregister the channel. mySponsor.Unregister(myService); mySponsor.Close(); }
public void SetUp() { tempDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "protobuf-net-gh24-" + Convert.ToBase64String(BitConverter.GetBytes(DateTime.UtcNow.Ticks)).Replace('/', '-').Substring(0, 11))); tempDir.Create(); var subdir = tempDir.CreateSubdirectory("temp"); assemblyPath = new FileInfo(Path.Combine(subdir.FullName, ASSEMBLY_NAME + ".dll")); CopyAssembly(assemblyPath); var setup = new AppDomainSetup { ApplicationBase = tempDir.FullName, // setting this to true allows both tests to pass DisallowApplicationBaseProbing = false }; domain = AppDomain.CreateDomain("Gh24", null, setup); sponsor = new ClientSponsor(); remoteSide = (RemoteSide)domain.CreateInstanceFromAndUnwrap(typeof(RemoteSide).Assembly.Location, typeof(RemoteSide).FullName); sponsor.Register(remoteSide); var references = new[] { typeof(Serializer).Assembly }; var assemblyPaths = references.ToDictionary(a => a.GetName(), a => a.Location); assemblyPaths[new AssemblyName(ASSEMBLY_NAME)] = assemblyPath.FullName; remoteSide.Initialize(assemblyPaths); }
//--// protected void RegisterRemoteObject(ServerRemoteObject mbr) { UnregisterRemoteObject(); m_mbr = mbr; m_sponsor = new ClientSponsor(); m_sponsor.Register(mbr); }
internal TBase CreateLoaderInstance <TBase>(TypeMoniker type) where TBase : IExtensionObject { if (_domain == null) { return((TBase)Activator.CreateInstance(Type.GetType(type.AssemblyQualifiedName))); } var rvl = (TBase)_domain.CreateInstanceAndUnwrap(type.AssemblyName, type.FullName); _clientSponsor.Register((MarshalByRefObject)(object)rvl); return(rvl); }
/// <summary> /// 通过ClientSponsor来延长远程对象生命周期 /// </summary> /// <param name="counter"></param> /// <returns></returns> static ISponsor ExtendLifetimeViaSponsor(object counter) { CounterService counterService = counter as CounterService; ILease lease = RemotingServices.GetLifetimeService(counterService) as ILease; //为Lease注册一个Sposnor,并把Renew时间设为4s ClientSponsor clientSponsor = new ClientSponsor(TimeSpan.FromSeconds(4)); clientSponsor.Register(counterService); return(clientSponsor); }
public static ICollection GetToolboxItems(AssemblyName an, bool throwOnError) { if (_domainObject == null) { _domain = AppDomain.CreateDomain("Assembly Enumeration Domain"); _domainObject = (DomainProxyObject)_domain.CreateInstanceAndUnwrap(typeof(DomainProxyObject).Assembly.FullName, typeof(DomainProxyObject).FullName); _domainObjectSponsor = new ClientSponsor(new TimeSpan(0, 5, 0)); _domainObjectSponsor.Register(_domainObject); } byte[] toolboxItems = _domainObject.GetToolboxItems(an, throwOnError); BinaryFormatter formatter = new BinaryFormatter(); return((ICollection)formatter.Deserialize(new MemoryStream(toolboxItems))); }
public static async Task Run(Action <RemoteTaskCompletionSource, ISponsor> action, CancellationToken token) { var sponsor = new ClientSponsor(); try { var taskHandle = new RemoteTaskCompletionSource(token); sponsor.Register(taskHandle); action(taskHandle, sponsor); await taskHandle.Task; } finally { sponsor.Close(); } }
public void BuildDocument() { var sponsor = new ClientSponsor(); EnvironmentContext.SetBaseDirectory(_baseDirectory); EnvironmentContext.SetGitFeaturesDisabled(_disableGitFeatures); EnvironmentContext.SetVersion(_version); if (_listener != null) { Logger.LogLevelThreshold = _logLevel; Logger.RegisterListener(_listener); sponsor.Register(_listener); } try { try { BuildDocument(_config, _manager, _baseDirectory, _outputDirectory, _pluginDirectory, _templateDirectory); } catch (AggregateException agg) when(agg.InnerException is DocfxException) { throw new DocfxException(agg.InnerException.Message); } catch (AggregateException agg) when(agg.InnerException is DocumentException) { throw new DocumentException(agg.InnerException.Message); } catch (DocfxException e) { throw new DocfxException(e.Message); } catch (DocumentException) { throw; } catch (Exception e) { throw new DocfxException(e.ToString()); } } finally { sponsor.Close(); } }
/// <summary>Recycles the application domain by killing the current one and creating a new one.</summary> private void RecycleAppDomain() { if (appDomain != null) { var oldDomain = appDomain; try { Task.Run(() => AppDomain.Unload(oldDomain)); } catch { } } appDomain = AppDomain.CreateDomain("razorDomain", null, adSetup, permissionSet); ObjectHandle handle = Activator.CreateInstanceFrom(appDomain, typeof(RazorTemplater).Assembly.ManifestModule.FullyQualifiedName, typeof(RazorTemplater).FullName, false, BindingFlags.CreateInstance, null, new object[] { templateNamespace, SAFE_GUARD }, null, null); templater = (RazorTemplater)handle.Unwrap(); clientSponsor.Register(templater); }
protected DomainAgentSessionHostBase(IServerSession sessionBase, ServerAgent agent, CancellationToken token) { this.agent = agent; this.Token = token; Tasks = new TaskRunnerManager(); SessionClient = new DomainAgentSessionClient(); SessionClient.OnSessionBegin += SessionClient_OnSessionBegin; SessionClient.OnSessionRelease += SessionClient_OnSessionRelease; SessionClient.OnSessionRunTask += SessionClient_OnSessionRunTask; sponsor = new ClientSponsor(); sponsor.Register(SessionClient); MessageClient = new MessageClient(PhotonServer.Instance.MessageRegistry); MessageClient.Transceiver.Context = sessionBase; MessageClient.ThreadException += MessageClient_OnThreadException; }
public void Initialize(string assemblyFilename) { var assemblyName = Path.GetFileName(assemblyFilename); var assemblyPath = Path.GetDirectoryName(assemblyFilename); if (string.IsNullOrEmpty(assemblyName)) throw new ApplicationException("Assembly filename is empty!"); var domainSetup = new AppDomainSetup { ApplicationBase = assemblyPath, ConfigurationFile = $"{assemblyFilename}.config", }; Sponsor = new ClientSponsor(); domain = AppDomain.CreateDomain(assemblyName, null, domainSetup); var agentType = typeof(T); Agent = (T)domain.CreateInstanceAndUnwrap(agentType.Assembly.FullName, agentType.FullName); Agent.LoadAssembly(assemblyFilename); Sponsor.Register(Agent); }
public void OnCompleted(Action action) { var sponsor = new ClientSponsor(); Callback cb = null; cb = new Callback(() => { try { action(); } finally { sponsor.Unregister(cb); } }); sponsor.Register(cb); OnCompletedCore(cb.Invoke); }
public void Start(ZetboxConfig config) { using (Logging.Log.DebugTraceMethodCall("Start", "Starting AppDomain for Server")) { serverDomain = AppDomain.CreateDomain("ServerAppDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation); AssemblyLoader.Bootstrap(serverDomain, config); serverManager = (IZetboxAppDomain)serverDomain.CreateInstanceAndUnwrap( "Zetbox.Server.Service", "Zetbox.Server.Service.ServerManager"); serverManager.Start(config); if (clientSponsor == null) { clientSponsor = new ClientSponsor(); clientSponsor.RenewalTime = TimeSpan.FromMinutes(2); } clientSponsor.Register(serverManager as MarshalByRefObject); } }