public void MulticastMessage() { using var target = new ClockServer(ClockServerOptions.Default); var message = target.MulticastMessage; Assert.AreEqual("fastclock\r\nname=Kolding\r\nversion=2\r\nip-address=" + TestMachineIPAdress + "\r\nip-port=2500\r\nclocktype=fastclock\r\nclock=06:00:00\r\nactive=no\r\nweekday=0\r\nspeed=6\r\ntext=\r\ninterval=2", message); }
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); }
public void Level2Message() { using var target = new ClockServer(ClockServerOptions.Default); var message = target.Level2Message; Assert.AreEqual("clocktype=fastclock\r\nclock=06:00:00\r\nactive=no\r\nweekday=0\r\nspeed=6\r\ntext=\r\ninterval=2", message); }
public void Level1Message() { using var target = new ClockServer(ClockServerOptions.Default); var message = target.Level1Message; Assert.AreEqual("0 06 00 6", message); }
private void updateTimerStatus() { ClockServer ins = ClockServer.ins; btnStop.Visibility = ins.isAlarm() ? Visibility.Visible : Visibility.Collapsed; btnSetting.Visibility = !ins.isAlarm() ? Visibility.Visible : Visibility.Collapsed; imgIcon.Visibility = !ins.isAlarm() ? Visibility.Visible : Visibility.Collapsed; imgIconRotate.Visibility = ins.isAlarm() ? Visibility.Visible : Visibility.Collapsed; String info = ""; ClockModel md = ClockServer.ins.playClockModel; if (md != null) { info = md.desc; } if (ins.isAlarm() && info != "") { lblNowTime.Padding = new Thickness(0, 28, 0, 0); lblNowTime.FontSize = 10; lblAlarmInfo.Visibility = Visibility.Visible; lblAlarmInfo.Content = info; } else { lblNowTime.Padding = new Thickness(0, 0, 0, 0); lblNowTime.FontSize = 20; lblAlarmInfo.Visibility = Visibility.Collapsed; } }
public void TryStartPolling() { if (Options.IsEnabled) { Listener = new TcpListener(ClockServer.GetLocalIPAddress(), Options.PortNumber); TcpListenerTask = Task.Factory.StartNew(() => ProcessTcpRequests(), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default); } }
public static ClockStatus GetStatus(this ClockServer me, IPAddress remoteIpAddress, string?userName) { if (me is null) { throw new ArgumentNullException(nameof(me)); } me.UpdateUser(remoteIpAddress, userName); return(me.GetStatus()); }
public void Level1Message() { var options = ClockServerOptions.Default; using var target = new ClockServer(options) { Name = options.Value.Name, Password = options.Value.Password }; var message = target.Level1Message; Assert.AreEqual("0 06 00 6", message); }
public static ClockSettings GetSettings(this ClockServer me) => me == null ? throw new ArgumentNullException(nameof(me)) : new ClockSettings { DurationHours = me.Duration.Hours, ExpectedResumeTime = me.ExpectedResumeTime.AsTimeOrEmpty(), IsElapsed = me.FastTime > me.StartTime, IsRunning = me.IsRunning, Message = me.Message.DefaultText, Mode = me.IsRealtime ? "1" : "0", Name = me.Name, OverriddenElapsedTime = string.Empty, Password = me.Password, PauseReason = ((int)me.PauseReason).ToString(CultureInfo.CurrentCulture), PauseTime = me.PauseTime.AsTimeOrEmpty(), ShowRealTimeWhenPaused = me.ShowRealTimeWhenPaused, Speed = me.Speed, StartTime = me.StartTime.AsTime(), StartWeekday = ((int)me.Weekday).ToString(CultureInfo.CurrentCulture) };
public static ClockStatus GetStatus(this ClockServer me) => me == null ? throw new ArgumentNullException(nameof(me)) : new ClockStatus { Duration = me.Duration.TotalHours, ExpectedResumeTimeAfterPause = me.ExpectedResumeTime.AsTimeOrEmpty(), FastEndTime = me.FastEndTime.AsTime(), IsCompleted = me.IsCompleted, IsPaused = me.IsPaused, IsRealtime = me.IsRealtime, IsRunning = me.IsRunning, Message = me.Message.DefaultText ?? "", Name = me.Name, PauseReason = me.PauseReason.ToString(), PauseTime = me.PauseTime.AsTimeOrEmpty(), RealEndTime = me.RealEndTime.AsTime(), Speed = me.Speed, StoppedByUser = me.StoppingUser ?? "", StoppingReason = me.IsRunning ? string.Empty : me.StopReason.ToString(), Time = me.Time.AsTime(), Weekday = me.Weekday == Weekday.NoDay ? "" : me.Weekday.ToString() };
public ClockMulticaster(MulticastOptions options, ClockServer server) { Options = options; Server = server; }
public static IEnumerable <ClockUser> ClockUsers(this ClockServer me) => me is null?Array.Empty <ClockUser>() : me.ClockUsers.OrderByDescending(u => u.LastUsedTime).Select(u => u.AsClockUser(me.UtcOffset));
public ClockPollingService(PollingOptions options, ClockServer server) { Options = options; Server = server; }
public ClockController(ClockServer server) { Server = server; }