public void RegisterNewWorker(string connectionId, RegisterWorkerArguments args) { WorkerConnection workerDb = (from worker in dbContext.WorkerConnections where worker.WorkerName == args.WorkerName select worker).FirstOrDefault(); if (workerDb == null) { WorkerConnection worker = new WorkerConnection() { ConnectionId = connectionId, WorkerName = args.WorkerName, MaxSessions = args.MaxSessions, ActiveSessions = args.ActiveSessionCount, AllSessions = args.AllSessionCount, State = WorkerConnectionState.Connected, }; dbContext.WorkerConnections.Add(worker); } else { workerDb.ConnectionId = connectionId; workerDb.MaxSessions = args.MaxSessions; workerDb.AllSessions = args.ActiveSessionCount; workerDb.ActiveSessions = args.AllSessionCount; workerDb.State = WorkerConnectionState.Connected; sessionManager.UpdateWorkerConnectionCache(workerDb); dbContext.Entry(workerDb).State = EntityState.Modified; } dbContext.SaveChanges(); }
public async Task RegisterWorker(RegisterWorkerArguments args) { await HubOperation(nameof(RegisterWorker), args, async() => { workerManager.RegisterNewWorker(Context.ConnectionId, args); sessionManager.CheckActiveSessions(args.WorkerName, args.SessionIdList, out IEnumerable <ProcessSession> terminatedSessions); foreach (var session in terminatedSessions) { await Clients.Group(session.GroupName).SendAsync("AddSystemMessage", "Sesja zakończona przez serwer wykonawczy."); } }); }
private void RegisterWorker() { if (CheckConnection()) { RegisterWorkerArguments args = new RegisterWorkerArguments() { ActiveSessionCount = ProcessManager.ProcessInstances.Count, AllSessionCount = ProcessManager.ProcessInstances.Count, MaxSessions = 20, WorkerName = "WebCrawlerWorker1", SessionIdList = ProcessManager.ProcessInstances.Keys, }; connection.InvokeAsync("RegisterWorker", args); } }