| ... | ... |
@@ -15,13 +15,16 @@ module Rubysermon |
| 15 | 15 |
def initialize |
| 16 | 16 |
@config = { repeat: 60,
|
| 17 | 17 |
config_path: "#{LIB_PATH}/rubysermon/config.json",
|
| 18 |
- db_path: "/tmp/rubysermon_history.db" |
|
| 18 |
+ db_path: "/tmp/rubysermon_history.db", |
|
| 19 |
+ history_size: 90 |
|
| 19 | 20 |
} |
| 20 | 21 |
|
| 21 | 22 |
@running_mods = [] |
| 22 | 23 |
@enabled_mods = [] |
| 23 | 24 |
@db = nil |
| 24 | 25 |
|
| 26 |
+ @results = [] |
|
| 27 |
+ |
|
| 25 | 28 |
check_args() |
| 26 | 29 |
end |
| 27 | 30 |
|
| ... | ... |
@@ -63,6 +66,7 @@ module Rubysermon |
| 63 | 63 |
|
| 64 | 64 |
def load_mod(mod_name) |
| 65 | 65 |
begin |
| 66 |
+ #prekonvertovat na symbol |
|
| 66 | 67 |
mod = ModLoader.load(mod_name) |
| 67 | 68 |
@running_mods.push(mod) |
| 68 | 69 |
rescue ModLoaderException => e |
| ... | ... |
@@ -88,11 +92,32 @@ module Rubysermon |
| 88 | 88 |
while true |
| 89 | 89 |
current_time = DateTime.now() |
| 90 | 90 |
@running_mods.each do |mod| |
| 91 |
- result = mod.results |
|
| 92 |
- notify = mod.notify? |
|
| 91 |
+ save_results(mod, current_time, mod.results()) |
|
| 92 |
+ notify() if mod.notify? |
|
| 93 | 93 |
end |
| 94 |
+ make_output() |
|
| 94 | 95 |
sleep @config[:repeat] |
| 95 | 96 |
end |
| 96 | 97 |
end |
| 98 |
+ |
|
| 99 |
+ def save_results(mod, time, result) |
|
| 100 |
+ mod_results = @results[mod] |
|
| 101 |
+ |
|
| 102 |
+ if mod_results.size >= @config[:history_size] |
|
| 103 |
+ mod_results.slice!(@config[:history_size], @results[mod].size) |
|
| 104 |
+ end |
|
| 105 |
+ |
|
| 106 |
+ #shift() and push() operations have O(1) complexity. |
|
| 107 |
+ mod_results.shift() |
|
| 108 |
+ mod_results.push([time: time, value: result]) |
|
| 109 |
+ end |
|
| 110 |
+ |
|
| 111 |
+ def notify |
|
| 112 |
+ |
|
| 113 |
+ end |
|
| 114 |
+ |
|
| 115 |
+ def make_output |
|
| 116 |
+ |
|
| 117 |
+ end |
|
| 97 | 118 |
end |
| 98 | 119 |
end |