tac_scribe 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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