Exemple #1
0
        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();
        }
Exemple #2
0
 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);
     }
 }