Exemple #1
0
 protected override void ProcessResponse(Envelope envelope)
 {
     if (envelope?.Message != null && envelope.Message?.GetType() == typeof(LoginReply))
     {
         LoginReply replyMessage = (LoginReply)envelope.Message;
         Logger.Info("Received Login response: " + replyMessage.Note);
         OnLoginUpdated?.Invoke(ProcessInfo.DeepCopy(replyMessage.ProcessInfo));
         WaitingForReply = false;
     }
     else if (envelope != null)
     {
         Logger.Info("Received unexpected message: " + envelope.Message?.ToString());
     }
     else
     {
         Logger.Info("Received completely null envelope");
     }
 }
Exemple #2
0
        public ProcessInfo ValidateProcess(ProcessInfo newProcess)
        {
            if (newProcess == null)
            {
                return(null);
            }

            Logger.Trace("Received login request from a process");
            bool success = true;

            switch (newProcess.Type)
            {
            case ProcessInfo.ProcessType.Client:
                newProcess.ProcessId = NewProcessId;
                KnownClients[newProcess.ProcessId] = newProcess;
                break;

            case ProcessInfo.ProcessType.ContractManager:
                newProcess.ProcessId = 1;
                ContractManagerInfo  = newProcess;
                break;

            default:
                success = false;
                break;
            }

            if (success)
            {
                newProcess.Status                  = ProcessInfo.StatusCode.Registered;
                newProcess.HeartbeatTimer          = Scheduler.GetIntervalTimerMillis(HeartbeatIntervalMs);
                newProcess.HeartbeatTimer.Elapsed += (sender, e) => OnHeartbeatExpired(sender, e, newProcess);
                newProcess.HeartbeatTimer.Enabled  = true;
                Registration_OnChange?.Invoke(ProcessInfo.DeepCopy(newProcess));
            }
            else
            {
                newProcess.Status = ProcessInfo.StatusCode.Terminated;
                Logger.Info($"Cannot register {newProcess.LabelAndId} ");
            }

            return(ProcessInfo.DeepCopy(newProcess));
        }