tac_scribe 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6540479b0949db23d8dcbfc7965a716d4909b7e03b314f9b1687b7b7b044e1b
4
- data.tar.gz: 9c6ee7a6e020b81eea6cd809c043eb31f2353256a41463da5349ee78699d3f1b
3
+ metadata.gz: 485c9e87c957fd0e66db7cc762a36283baa2c4852546008b2d4dbd5e2372a53a
4
+ data.tar.gz: 95576f042c7455ac1e5b87bcab21d6a5ff555d8f67a83b4c7cd2531b56f696c1
5
5
  SHA512:
6
- metadata.gz: 5236421e641674570e47e65c309ed12c0beff782cfd7fddea75d09687a4aa7660a445cc5249e2d8489f4a56df2cba8ec9fd76df1390b916053cd35ab9dc19f84
7
- data.tar.gz: 3a500080c5d44f78c1bfd0914face93c40d318eb8721d7a2e0876a7e5cfdc9cfdddded214fe0f99da2fbcb356420d1319159f085cbcbdd2d61eac3064afaf4c3
6
+ metadata.gz: 1aefe11c62a16ac70377bc48f262b699f2aebb4c38480bbe677b1490e5d14320c0e213d1976e0b4a477e1687e24b8bccae1b9a7f111bdaaeca1c0ebba63f9d62
7
+ data.tar.gz: 2d54201ba482399aafd29a4633b3b7361220457e85e8aae0447be8920191fc708e3582617affe5176d6bacd6682688c73e315772e094a71ada60af1101b6a2f5
data/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.5.0]
10
+ ### Changed
11
+ - Added missing db column to migration file
12
+ - Clear the cache on server restart
13
+ - Add more info to logging
14
+
9
15
  ## [0.4.0]
10
16
  ### Changed
11
17
  - Switch to periodic writing to the database
@@ -0,0 +1,5 @@
1
+ Sea+Watercraft+AircraftCarrier
2
+ Air+Rotorcraft
3
+ Air+FixedWing
4
+ Ground+Static+Aerodrome
5
+ Navaid+Static+Bullseye
@@ -13,6 +13,7 @@ Sequel.migration do
13
13
  Integer :coalition
14
14
  Integer :heading
15
15
  Time :updated_at
16
+ Boolean :deleted
16
17
  # TODO: GIST Index on the position
17
18
  end
18
19
  end
@@ -75,6 +75,10 @@ module TacScribe
75
75
  def delete_object(id)
76
76
  @@cache[id][:deleted] = true if @@cache[id]
77
77
  end
78
+
79
+ def clear
80
+ @@cache.clear
81
+ end
78
82
 
79
83
  private
80
84
 
@@ -53,6 +53,7 @@ module TacScribe
53
53
  kill_threads
54
54
  @event_queue.clear
55
55
  Datastore.instance.truncate_table
56
+ Cache.instance.clear
56
57
  start_processing_threads
57
58
  start_db_sync_thread
58
59
  start_reporting_thread
@@ -79,13 +80,13 @@ module TacScribe
79
80
 
80
81
  def start_processing_threads
81
82
  @event_processor = EventProcessor.new(cache: Cache.instance,
82
- datastore: Datastore.instance,
83
- event_queue: @event_queue,
84
- whitelist: @whitelist)
83
+ datastore: Datastore.instance,
84
+ event_queue: @event_queue,
85
+ whitelist: @whitelist)
85
86
  event_processor_thread = Thread.new do
86
87
  @event_processor.start
87
88
  end
88
- event_processor_thread.name = "Event Processor"
89
+ event_processor_thread.name = 'Event Processor'
89
90
  @threads << event_processor_thread
90
91
  end
91
92
 
@@ -97,7 +98,7 @@ module TacScribe
97
98
  deleted.each { |id| Cache.instance.data.delete(id) }
98
99
  end
99
100
  end
100
- db_write_thread.name = "Database Writing"
101
+ db_write_thread.name = 'Database Writing'
101
102
  @threads << db_write_thread
102
103
  end
103
104
 
@@ -106,18 +107,22 @@ module TacScribe
106
107
 
107
108
  reporting_thread = Thread.new do
108
109
  loop do
109
- puts "#{Time.now.strftime('%FT%T')}\t" +
110
- "Events Incoming: #{@event_queue.events_written}\t" +
111
- "Processed: #{@event_processor.events_processed}\t" +
112
- "Ignored: #{@event_processor.events_ignored}\t" +
113
- "Queue Size: #{@event_queue.size}"
110
+ puts "#{Time.now.strftime('%FT%T')}\t" \
111
+ "Events Incoming: #{@event_queue.events_written}\t" \
112
+ "Processed: #{@event_processor.events_processed}\t" \
113
+ "Ignored: #{@event_processor.events_ignored}\t" \
114
+ "Queue Size: #{@event_queue.size}\t" \
115
+ "Objects Written: #{Datastore.instance.written}\t" \
116
+ "Deleted: #{Datastore.instance.deleted}"
114
117
  @event_queue.events_written = 0
115
118
  @event_processor.events_processed = 0
116
119
  @event_processor.events_ignored = 0
120
+ Datastore.instance.written = 0
121
+ Datastore.instance.deleted = 0
117
122
  sleep 1
118
123
  end
119
124
  end
120
- reporting_thread.name = "Reporting"
125
+ reporting_thread.name = 'Reporting'
121
126
  @threads << reporting_thread
122
127
  end
123
128
 
@@ -14,7 +14,7 @@ module TacScribe
14
14
  include Singleton
15
15
  include GeoRuby::SimpleFeatures
16
16
 
17
- attr_accessor :db
17
+ attr_accessor :db, :written, :deleted
18
18
 
19
19
  @configuration = nil
20
20
  @db = nil
@@ -64,6 +64,9 @@ module TacScribe
64
64
  .multi_insert(objects)
65
65
  deleted_ids = @db[:units].where(deleted: true).select_map(:id)
66
66
  @db[:units].where(deleted: true).delete
67
+ self.written = objects.size
68
+ self.deleted = deleted_ids.size
69
+
67
70
  deleted_ids
68
71
  end
69
72
 
@@ -82,7 +82,7 @@ module TacScribe
82
82
  def delete_object(id)
83
83
  if @@ignored_units.delete?(id)
84
84
  self.events_processed += 1
85
- return
85
+ nil
86
86
  else
87
87
  self.events_processed += 1
88
88
  @cache.delete_object(id)
@@ -6,7 +6,6 @@ require 'time'
6
6
  module TacScribe
7
7
  # Processes the events emitted by the Ruby Tacview Client
8
8
  class EventQueue < TacviewClient::BaseProcessor
9
-
10
9
  attr_accessor :events_written
11
10
 
12
11
  def initialize
@@ -44,7 +43,7 @@ module TacScribe
44
43
  # @option event [BigDecimal] :altitude The object altitude above sea level
45
44
  # in meters to 1 decimal place.
46
45
  def update_object(event)
47
- self.events_written +=1
46
+ self.events_written += 1
48
47
  @events << { type: :update_object, event: event, time: @time }
49
48
  end
50
49
 
@@ -53,7 +52,7 @@ module TacScribe
53
52
  # @param object_id [String] A hexadecimal number representing the object
54
53
  # ID
55
54
  def delete_object(object_id)
56
- self.events_written +=1
55
+ self.events_written += 1
57
56
  @events << { type: :delete_object, object_id: object_id }
58
57
  end
59
58
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TacScribe
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tac_scribe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey Jones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-13 00:00:00.000000000 Z
11
+ date: 2020-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -201,6 +201,7 @@ files:
201
201
  - bin/console
202
202
  - bin/setup
203
203
  - data/airfields.json
204
+ - data/whitelist.example
204
205
  - db/001_create_unit_table.rb
205
206
  - db/README.md
206
207
  - exe/tac_scribe