tiny_work_service 2.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tiny_work_service.rb +17 -8
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7c5571b2bf724aef7555d8c11de715b7f2d3a8c615e319b9464a0a13f10b33d
4
- data.tar.gz: e8b2ff42e033f913bfd46e9d0120cba2fdf7c067782c98e0c6e2df96b22e9bd9
3
+ metadata.gz: 3b785423b4fed5c70b3d1a0edeec40270ecf8ec3e9c2c5959bc147cadd152fe8
4
+ data.tar.gz: 8b94f8906d00b5d1eda6989bdb20215be2db7b2122f1b2fee184cad89d506cbe
5
5
  SHA512:
6
- metadata.gz: bb3937d747d331b33ab3cbefd16c6d98550274cc0bb6068b1fb5155e8b7b7e0c09d99c50dd2dd504d065930afc484b3e3800694d0fb93f1807dde0055c10a3b6
7
- data.tar.gz: 231760d6718b704206986b94e8123667af07726946b3bc68d4fc32766dff6f38b34a4b258ffd09bfad5b0ef436e50a49decd68591669e3864787d09f7d46ef95
6
+ metadata.gz: 1003c35da546314d8ca952cc96dfe3dff7b6cd63f3c5fbcde8be9eb828685024d41f946f50df1482fe54bf04f1dc0d088c0e165940f660e024b0916b3e0e6896
7
+ data.tar.gz: 95cb6711d1ebe2914cd638024c7566e6dfd578e7b8e4916d2b320f616ec7de39eb048a79ade2b3b1b12361ac231b986d9f0e7872b5fe4ae687ba4e51bb6c453f
@@ -10,11 +10,12 @@ class TinyWorkService
10
10
  :jobs_per_minute,
11
11
  :jobs_per_hour
12
12
 
13
- def initialize(port, label)
13
+ def initialize(port, label, refresh_interval_in_seconds)
14
14
  @service = TinyTCPService.new(port)
15
15
  @service.msg_handler = self
16
16
  @jobs = Queue.new
17
17
  @label = label
18
+ @label_and_port = "#{@label}:#{port}"
18
19
 
19
20
  @jobs_enqueued = 0
20
21
  @jobs_dequeued = 0
@@ -23,21 +24,27 @@ class TinyWorkService
23
24
 
24
25
  @jobs_per_minute = 0
25
26
  @jobs_per_hour = 0
27
+ @errors_total = 0
26
28
 
27
29
  # status printing thread
28
30
  Thread.new do
31
+ start_time = Time.now
29
32
  print "\e[?25l" # hide cursor
30
33
  loop do
31
34
  break unless @service.running?
35
+ sec_runtime = Time.now - start_time
36
+ human_runtime = "%02d:%02d:%02d" % [sec_runtime / 3600, sec_runtime / 60 % 60, sec_runtime % 60]
32
37
 
33
38
  print "\e[1;1H"
34
- puts "#{DateTime.now.iso8601}\e[K"
35
- puts "#{@label}:#{port}\e[K"
36
- puts "workers :#{@service.num_clients.to_s.rjust(10)}\e[K"
37
- puts "queue :#{@jobs.length.to_s.rjust(10)}\e[K"
38
- puts "jobs/m :#{@jobs_per_minute.to_s.rjust(10)}\e[K"
39
- print "jobs/h :#{@jobs_per_hour.to_s.rjust(10)}\e[K"
40
- sleep 0.5
39
+ puts "label/port: #{@label_and_port.rjust(28)}\e[K"
40
+ puts "time : #{DateTime.now.iso8601.rjust(28)}\e[K"
41
+ puts "runtime : #{human_runtime.rjust(28)}\e[K"
42
+ puts "workers : #{@service.num_clients.to_s.rjust(28)}\e[K"
43
+ puts "queue : #{@jobs.length.to_s.rjust(28)}\e[K"
44
+ puts "jobs/m : #{@jobs_per_minute.to_s.rjust(28)}\e[K"
45
+ puts "jobs/h : #{@jobs_per_hour.to_s.rjust(28)}\e[K"
46
+ print "errors : #{@errors_total.to_s.rjust(28)}\e[K"
47
+ sleep refresh_interval_in_seconds
41
48
  end
42
49
  print "\e[?25h" # show cursor
43
50
  end
@@ -85,6 +92,8 @@ class TinyWorkService
85
92
  'ok' # ok, job received
86
93
  when m[0] == '-' # take a job from the queue
87
94
  shift || ''
95
+ when m[0] == '!' # register an error
96
+ @errors_total += 1
88
97
  else
89
98
  raise TinyTCPService::BadClient.new("Client sent invalid message: `#{m[..50]}'")
90
99
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_work_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Lunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-12 00:00:00.000000000 Z
11
+ date: 2024-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tiny_tcp_service