public ActionResult <AddReaderResponse> Post(AddReader request) { GXSelectArgs arg = GXSelectArgs.SelectAll <GXReaderInfo>(); arg.Where.And <GXReaderInfo>(q => q.Guid == request.Reader.Guid); GXReaderInfo i = host.Connection.SingleOrDefault <GXReaderInfo>(arg); if (i == null) { request.Reader.Detected = request.Reader.Generation = DateTime.Now; host.Connection.Insert(GXInsertArgs.Insert(request.Reader)); } else if (i.Name != request.Reader.Name && !string.IsNullOrEmpty(request.Reader.Name)) { //Update reader name. i.Detected = DateTime.Now; host.Connection.Update(GXUpdateArgs.Update(i, u => new { u.Detected, u.Name })); } else { i.Detected = DateTime.Now; host.Connection.Update(GXUpdateArgs.Update(i, u => u.Detected)); } host.SetChange(TargetType.Readers, DateTime.Now); return(new AddReaderResponse()); }
public System.Threading.Tasks.Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Reader Service is starting."); GXReaderInfo r = new GXReaderInfo(); r.Guid = _guid; r.Name = _name; FileVersionInfo info = FileVersionInfo.GetVersionInfo(typeof(ReaderService).Assembly.Location); r.Version = info.FileVersion; for (int pos = 0; pos != _threads; ++pos) { Thread t3 = new Thread(() => DoWork(pos == 0 ? r : null)); t3.Start(); } return(System.Threading.Tasks.Task.CompletedTask); }
/// <summary> /// Send notify that reader is alive. /// </summary> /// <param name="value"></param> private async void ListenerAlive(GXReaderInfo value) { //Give some time DB server to start up. Thread.Sleep(1000); System.Net.Http.HttpResponseMessage response; while (!_cancellationToken.IsCancellationRequested) { using (response = await client.PostAsJsonAsync(Startup.ServerAddress + "/api/reader/AddReader", new AddReader() { Reader = value })) { Helpers.CheckStatus(response); } if (_aliveTime == 0) { break; } Thread.Sleep(_aliveTime * 60000); } }
public System.Threading.Tasks.Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Reader Service is starting."); GXReaderInfo r = new GXReaderInfo(); r.Guid = _guid; r.Name = _name; FileVersionInfo info = FileVersionInfo.GetVersionInfo(typeof(ReaderService).Assembly.Location); r.Version = info.FileVersion; //Don't wait reply. It might that DB server is not up yet. client.PostAsJsonAsync(Startup.ServerAddress + "/api/reader/AddReader", new AddReader() { Reader = r }); for (int pos = 0; pos != _threads; ++pos) { Thread t3 = new Thread(() => DoWork()); t3.Start(); } return(System.Threading.Tasks.Task.CompletedTask); }
/// <summary> /// Show meters that are mapped to this reader. /// </summary> private void ReadersView_SelectedIndexChanged(object sender, EventArgs e) { try { DevicesView.Items.Clear(); if (ReadersView.SelectedItems.Count == 1) { GXReaderInfo[] info = new GXReaderInfo[] { (GXReaderInfo)ReadersView.SelectedItems[0].Tag }; GXDevice[] devices = ami.GetDevices(info); foreach (GXDevice it in devices) { ListViewItem li = DevicesView.Items.Add(it.Id.ToString()); li.SubItems.Add(it.Name); li.SubItems.Add(it.Generation.ToString()); li.Tag = it; } } } catch (Exception Ex) { MessageBox.Show(ReadersView.Parent, Ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }