コード例 #1
0
ファイル: CommHub.cs プロジェクト: Chemsorly/Conductor
        public WorkPackage FetchWork(MachineData pMachineData)
        {
            //debug test
            NewLogMessageEvent?.Invoke($"New Work Request received from {this.Context?.ConnectionId}");
            var work = WorkRequestedEvent?.Invoke(pMachineData.OperatingSystem, this.Context?.ConnectionId);

            return(work);
        }
コード例 #2
0
        public override void Initialize()
        {
            CommHub.NewClientEvent             += NotifyNewClientEvent;
            CommHub.ClientDisconnectedEvent    += NotifyClientDisconnectedEvent;
            CommHub.NewLogMessageEvent         += NotifyNewLogMessageEvent;
            CommHub.NewClientLogMessageEvent   += NewClientLogMessageEvent;
            CommHub.NewClientErrorMessageEvent += NewclientErrorMessageEvent;
            CommHub.MachineDataReceivedEvent   += (id, data) =>
            {
                var client = ConnectedClients.FirstOrDefault(t => t.ID == id);
                if (client != null)
                {
                    client.ContainerVersion = data.ContainerVersion;
                    client.OperatingSystem  = data.OperatingSystem;
                    client.ProcessingUnit   = data.ProcessingUnit;
                    client.MachineName      = data.Name;
                    NotifyClientUpdatedEvent(client);
                }
            };
            CommHub.ClientStatusUpdatedEvent += (id, status) =>
            {
                var client = ConnectedClients.FirstOrDefault(t => t.ID == id);
                if (client != null)
                {
                    client.IsWorking             = status.IsWorking;
                    client.LastEpochDuration     = status.LastEpochDuration;
                    client.CurrentEpoch          = status.CurrentEpoch;
                    client.CurrentWorkParameters = status.CurrentWorkParameters;
                    NotifyClientUpdatedEvent(client);
                }
            };
            CommHub.WorkRequestedEvent             += (os, id) => WorkRequestedEvent?.Invoke(os, id);
            CommHub.TrainingResultsReceivedEvent   += (results, id) => TrainingResultsReceivedEvent?.Invoke(results, id);
            CommHub.PredictionResultsReceivedEvent += (results, id) => PredictionResultsReceivedEvent?.Invoke(results, id);

            NotifyNewLogMessageEvent("Attempting to initialize SignalR listener on port 8080");
            SignalRStartup.Run("http://0.0.0.0:8080/").ContinueWith(itask =>
            {
                NotifyNewLogMessageEvent($"Could not start SignalR listener on port 8080. Are you running the application as admin? Exception: {itask.Exception.Message}");
            }, TaskContinuationOptions.OnlyOnFaulted)
            .ContinueWith(itask =>
            {
                NotifyNewLogMessageEvent($"Started SignalR listener on port 8080");
            }, TaskContinuationOptions.OnlyOnRanToCompletion);

            base.Initialize();
        }
コード例 #3
0
        public override void Initialize()
        {
            CommHub.NewClientEvent           += NotifyNewClientEvent;
            CommHub.ClientDisconnectedEvent  += NotifyClientDisconnectedEvent;
            CommHub.NewLogMessageEvent       += NotifyNewLogMessageEvent;
            CommHub.NewClientLogMessageEvent += NewClientLogMessageEvent;
            CommHub.MachineDataReceivedEvent += (id, data) =>
            {
                var client = _clients.FirstOrDefault(t => t.ID == id);
                if (client != null)
                {
                    client.ContainerVersion = data.ContainerVersion;
                    client.OperatingSystem  = data.OperatingSystem;
                    client.ProcessingUnit   = data.ProcessingUnit;
                    client.MachineName      = data.Name;
                    NotifyClientUpdatedEvent(client);
                }
            };
            CommHub.ClientStatusUpdatedEvent += (id, status) =>
            {
                var client = _clients.FirstOrDefault(t => t.ID == id);
                if (client != null)
                {
                    client.IsWorking             = status.IsWorking;
                    client.LastEpochDuration     = status.LastEpochDuration;
                    client.CurrentEpoch          = status.CurrentEpoch;
                    client.CurrentWorkParameters = status.CurrentWorkParameters;
                    NotifyClientUpdatedEvent(client);
                }
            };
            CommHub.WorkRequestedEvent   += (os, id) => WorkRequestedEvent?.Invoke(os, id);
            CommHub.ResultsReceivedEvent += (results, id) => ResultsReceivedEvent?.Invoke(results, id);

            try
            {
                _signalrapp = WebApp.Start <SignalRStartup>("http://*:8080/");
                NotifyNewLogMessageEvent("SignalR listener initialized to port 8080");
            }
            catch (Exception ex)
            {
                NotifyNewLogMessageEvent($"Could not start SignalR listener on port 8080. Are you running the application as admin? Exception: {ex.Message}");
            }

            base.Initialize();
        }