예제 #1
0
        public void RunningClock()
        {
            var receivedUdp = new List <string>();
            var settings    = new ClockSettings()
            {
                IsRunning = true
            };
            var options = ClockServerOptions.Default.Value;

            using (var receiver = new UdpClient(2000, AddressFamily.InterNetwork))
            {
                receiver.JoinMulticastGroup(IPAddress.Parse(options.Multicast.IPAddress), ClockServer.GetLocalIPAddress());
                var state = new State {
                    u = receiver, l = receivedUdp
                };
                using var t      = Task.Factory.StartNew(() => Receiver(receiver, state), CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default);
                using var target = new ClockServer(
                          Options.Create(new ClockServerOptions()
                {
                    Multicast = new MulticastOptions { IntervalSeconds = 1, IPAddress = "239.50.50.20", IsEnabled = true, PortNumber = 2000 },
                    Polling   = new PollingOptions { IsEnabled = true, PortNumber = 2500 },
                    StartTime = TimeSpan.FromHours(5.5),
                    Speed     = 6,
                }));
                {
                }
                target.Start(settings);
                Assert.IsTrue(target.IsRunning);
                Thread.Sleep(10000);
                target.Stop();
                receiver.Close();
                t.Wait();
            }
            Assert.IsTrue(receivedUdp.Count > 0);
        }
예제 #2
0
        private void NewClockCommand_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            ClockSettings panelSettings = new ClockSettings();
            ClockDlg      dlgWindow     = new ClockDlg(panelSettings);

            InitiateNewGaugeDlg(dlgWindow, panelSettings);
        }
예제 #3
0
        public void ClockStatusSerilizeAndDeSerialize()
        {
            var target = new ClockSettings()
            {
                DurationHours      = 15.5,
                ExpectedResumeTime = string.Empty,
                IsElapsed          = true,
                IsRunning          = true,
                Message            = string.Empty,
                Mode = "1",
                Name = "Test",
                OverriddenElapsedTime  = string.Empty,
                AdministratorPassword  = "******",
                PauseReason            = "NoReason",
                PauseTime              = string.Empty,
                ShouldRestart          = false,
                ShowRealTimeWhenPaused = true,
                Speed        = 5.5,
                StartTime    = "06:00",
                StartWeekday = "Monday"
            };
            var json   = JsonSerializer.Serialize(target);
            var actual = JsonSerializer.Deserialize <ClockSettings>(json);

            Assert.IsNotNull(actual);
            Assert.AreEqual(target.DurationHours, actual.DurationHours);
        }
예제 #4
0
 public XGameInstaller(MiscSettings miscSettings, ClockSettings clockSettings, TimerSettings timerSettings, PlayerDataModel playerDataModel, BreaktimeSettings breaktimeSettings)
 {
     _miscSettings      = miscSettings;
     _clockSettings     = clockSettings;
     _timerSettings     = timerSettings;
     _playerDataModel   = playerDataModel;
     _breaktimeSettings = breaktimeSettings;
 }
예제 #5
0
        public void Start(ClockSettings settings)
        {
            this.Stop();
            this.settings = settings;
            this.sensorId = -1;
            this.time     = DateTime.Now;

            this.timer          = new System.Timers.Timer();
            this.timer.Interval = this.random.Next(settings.MinInterval, settings.MaxInterval);
            this.timer.Elapsed += (_, __) => this.Invoke();
            this.timer.Start();
        }
예제 #6
0
        private IDictionary <InvokeType, int> GetWeights(ClockSettings settings)
        {
            var weights = new Dictionary <InvokeType, int>
            {
                { InvokeType.Success, settings.TriggerSuccessWeight },
                { InvokeType.DoNotTrigger, settings.DoNotTriggerWeight },
                { InvokeType.WrongSensor, settings.SetWrongSensorIdWeight },
                { InvokeType.WrongDeltaTime, settings.SetWrongDeltaTimeWeight },
                { InvokeType.MultipleSensors, settings.TriggerMultipleWeight }
            };

            return(weights.Where(w => w.Value != 0).ToDictionary(w => w.Key, w => w.Value));
        }
예제 #7
0
        public void OnCommand(Command cmd)
        {
            switch(cmd.MessageId)
            {
                case Command.COMMAND_RECIEVE_SETTINGS:
                    // Parse the settings
                    m_settings = Newtonsoft.Json.JsonConvert.DeserializeObject<ClockSettings>(cmd.Message);

                    // Update the UI
                    UpdateClockSettingsUI();
                    break;
            }
        }
예제 #8
0
        public void OnCommand(Command cmd)
        {
            switch (cmd.MessageId)
            {
            case Command.COMMAND_RECIEVE_SETTINGS:
                // Parse the settings
                m_settings = Newtonsoft.Json.JsonConvert.DeserializeObject <ClockSettings>(cmd.Message);

                // Update the UI
                UpdateClockSettingsUI();
                break;
            }
        }
예제 #9
0
        public IHttpActionResult DeleteClockSettings(long id)
        {
            ClockSettings clockSettings = db.ClockSettings.Find(id);

            if (clockSettings == null)
            {
                return(NotFound());
            }

            db.ClockSettings.Remove(clockSettings);
            db.SaveChanges();

            return(Ok(clockSettings));
        }
예제 #10
0
        public IHttpActionResult GetClockSettings()
        {
            //   db.Configuration.ProxyCreationEnabled = false;
            string        uid           = User.Identity.GetUserId();
            ClockSettings clockSettings = db.ClockSettings.SingleOrDefault(z => z.UserId == uid);

            if (clockSettings == null)
            {
                var cs = new ClockSettings {
                    UserId = uid
                };
                db.ClockSettings.Add(cs);
                db.SaveChanges();
            }

            return(Ok(db.ClockSettings.SingleOrDefault(z => z.UserId == uid)));
        }
예제 #11
0
 public IActionResult Update(
     [SwaggerParameter("Clock name", Required = true)] string?clock,
     [FromQuery, SwaggerParameter("API-key", Required = true)] string?apiKey,
     [FromQuery, SwaggerParameter("User Name", Required = true)] string?user,
     [FromBody, SwaggerRequestBody("Clock settings", Required = true)] ClockSettings settings)
 {
     if (settings is null || string.IsNullOrWhiteSpace(clock))
     {
         return(BadRequest());
     }
     if (Servers.Exists(clock) && !IsAdministrator(apiKey, clock, settings.Password))
     {
         return(Unauthorized());
     }
     Servers.Instance(clock).Update(settings.AsSettings(), RemoteIpAddress, user);
     return(Ok());
 }
예제 #12
0
 public IActionResult Update(
     [SwaggerParameter("Clock name", Required = true)] string?clock,
     [FromQuery, SwaggerParameter("Username", Required = true)] string?user,
     [FromQuery, SwaggerParameter("Administrator password", Required = true)] string?password,
     [FromBody, SwaggerRequestBody("Clock settings", Required = true)] ClockSettings settings)
 {
     if (settings is null || string.IsNullOrWhiteSpace(clock))
     {
         return(BadRequest(SettingsErrorMessage(clock)));
     }
     if (Servers.Exists(clock) && !IsAdministrator(clock, password))
     {
         return(Unauthorized(AdministratorUnauthorizedErrorMessage()));
     }
     if (Servers.Instance(clock).Update(user, password, settings.AsSettings(), RemoteIpAddress))
     {
         return(Ok());
     }
     return(Unauthorized(UserUnauthorizedErrorMessage()));
 }
예제 #13
0
파일: Clock.cs 프로젝트: QuinnDamerell/Glow
 public Command CommandRecieved(Command command)
 {
     switch(command.MessageId)
     {
         case Command.COMMAND_RECIEVE_SETTINGS:
             {
                 m_settings = Newtonsoft.Json.JsonConvert.DeserializeObject<ClockSettings>(command.Message);
                 break;
             }
         case Command.COMMAND_GET_SETTINGS:
             {
                 // Send the settings
                 Command settingsCommand = new Command();
                 settingsCommand.MessageId = Command.COMMAND_RECIEVE_SETTINGS;
                 settingsCommand.Program = GlowCommon.GlowPrograms.Clock;
                 settingsCommand.Message = Newtonsoft.Json.JsonConvert.SerializeObject(m_settings);
                 return settingsCommand;
             }
     }
     return null;
 }
예제 #14
0
        public IHttpActionResult PutClockSettings(ClockSettings clockSettings)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            clockSettings.UserId     = User.Identity.GetUserId();
            clockSettings.ScheduleId = clockSettings.Schedule.Id;

            db.Entry(clockSettings).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
예제 #15
0
파일: Clock.cs 프로젝트: ssk13/AvaGlow
        public Command CommandRecieved(Command command)
        {
            switch (command.MessageId)
            {
            case Command.COMMAND_RECIEVE_SETTINGS:
            {
                m_settings = Newtonsoft.Json.JsonConvert.DeserializeObject <ClockSettings>(command.Message);
                break;
            }

            case Command.COMMAND_GET_SETTINGS:
            {
                // Send the settings
                Command settingsCommand = new Command();
                settingsCommand.MessageId = Command.COMMAND_RECIEVE_SETTINGS;
                settingsCommand.Program   = GlowCommon.GlowPrograms.Clock;
                settingsCommand.Message   = Newtonsoft.Json.JsonConvert.SerializeObject(m_settings);
                return(settingsCommand);
            }
            }
            return(null);
        }
예제 #16
0
 public async Task <HttpResponseMessage> Update(string clockName, string?userName, ClockSettings settings) =>
 await Http.PostAsJsonAsync($"api/clocks/{clockName}/update?apiKey={ApiKey}&user={userName}", settings).ConfigureAwait(false);
예제 #17
0
 public async Task <HttpResponseMessage> UpdateSettings(string clockName, string?userName, string?administratorPassword, ClockSettings settings) =>
 await Http.PostAsJsonAsync($"api/clocks/{clockName}/settings?user={userName}&password={administratorPassword}", settings).ConfigureAwait(false);
예제 #18
0
 public void Construct(ClockSettings settings)
 {
     _settings = settings;
 }
예제 #19
0
 public Clock(MainWindow mainWindow, ClockSettings panelSettings)
     : base(mainWindow, panelSettings)
 {
     this.panelSettings = panelSettings;
 }
예제 #20
0
 public ClockDlg(ClockSettings panelSettings)
     : base(panelSettings)
 {
     InitializeComponent();
     ApplyBindings();
 }
예제 #21
0
 protected override void Init(PanelSettings panelSettings)
 {
     this.panelSettings = base.panelSettings as ClockSettings;
 }