magic_mirror 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: 2680e984bec0cb5e027dbaf97c9a0261435bb90a
4
- data.tar.gz: 56166179a96730b628b0c4bc8e38c501fcdf67a4
3
+ metadata.gz: 5fa360c7a0a4dafbfc28a7f72830b5704a9b996d
4
+ data.tar.gz: 7c1cc12e923f2cea40123bb08d8898f59d0c76be
5
5
  SHA512:
6
- metadata.gz: af99477479b7398e6fcc14e2c73e23cfa07f4c14904c7760f92cbf123cff98f612b96b652fa29b7105f84b16293878d3726bc8f9f8f6cdc803ca82a3cb80b425
7
- data.tar.gz: b0345ddff87ffc66df6f557a31800077ce75319f71415c06625253b285c5ff73c3d0f1f8e6fc0b46cbdef4186264ba6c4e847c0e5490f3750f2a418322ead494
6
+ metadata.gz: c445d1a4ab8baccab23055f4376dbe4422531cbe3e08659ba48370a3607da3afe8af77ad57f8b02fb8a3ef0d7b6ac17119162def83ed83332f32342905148c88
7
+ data.tar.gz: 307a258db0ffe82fe49f1e16605a22c5e4d14ee519202a348e2ccbb3d40f2f7b8a6b51f88751a6f87fbeaa10f1d2d7d7cfffb50214e73b21056958d3b4545e72
data/changelog CHANGED
@@ -16,20 +16,17 @@
16
16
  > Solution: Make ports random?
17
17
  > Solution: Make 1 port, but make things accessible as /roots/myRoot
18
18
 
19
-
20
- - Think of other popular uses for rendering...
21
-
22
- - secure by making servers listen only on localhost for websockets
19
+ - secure by making servers listen only on localhost for websockets
23
20
 
24
21
 
25
22
 
26
23
  Currently:
27
24
 
28
- - Small discrepencies in bigish trtl lines in the tree example
29
25
 
26
+ Finished:
30
27
 
28
+ - CORE: Introduced buffering when system is bogged down, tree draws in 3s
31
29
 
32
- Finished:
33
30
 
34
31
  ** 0.1.1 **
35
32
 
@@ -1,12 +1,38 @@
1
1
  module MagicMirror
2
2
 
3
3
  class CommandCache < Array
4
+ attr_accessor :buffer
5
+
6
+ def initialize
7
+ @buffer = []
8
+ @buffer_flush_point = 500
9
+ @last_command_at = Time.now
10
+
11
+ @mutex = Mutex.new
12
+
13
+ @timeout_thread = Thread.new {
14
+ while true
15
+ @mutex.synchronize {
16
+ MagicMirror.command_cache.transmit_buffer!
17
+ }
18
+ Thread.stop
19
+ sleep 0.2
20
+ end
21
+ }
22
+
23
+ super
24
+ end
25
+
4
26
  def <<(value)
5
- #puts "you pushed"
6
- MagicMirror.mirror.speak_into(value)
27
+ @buffer << value
28
+
29
+ transmit_buffer_if_ripe
30
+ queue_buffer_to_be_transmitted
31
+
7
32
  super
8
33
  end
9
34
 
35
+
10
36
  def reset
11
37
  self.clear
12
38
  MagicMirror.mirror.speak_into("MagicMirror.clearCommandCache();")
@@ -35,6 +61,37 @@ module MagicMirror
35
61
  string
36
62
  end
37
63
 
64
+ def transmit_buffer_if_ripe
65
+ if time_to_send_commands_through_mirror? or we_have_a_light_message_load?
66
+ transmit_buffer!
67
+ end
68
+ @last_command_at = Time.now
69
+ end
70
+
71
+ def transmit_buffer!
72
+ MagicMirror.mirror.speak_into(@buffer.join) if @buffer.length > 0
73
+ @buffer = []
74
+ end
75
+
76
+ def time_to_send_commands_through_mirror?
77
+ @buffer.length >= @buffer_flush_point
78
+ end
79
+
80
+ def we_have_a_light_message_load?
81
+ (Time.now - @last_command_at) > 0.10
82
+ end
83
+
84
+ # This method goes wrong because it can fire at the same time
85
+ # magic_mirror.speak_into may be firing....
86
+ def queue_buffer_to_be_transmitted
87
+ @timeout_thread.wakeup if @timeout_thread.status == "sleep"
88
+ end
89
+
90
+ def needs_flush?
91
+ @buffer.length >= 0
92
+ end
93
+
94
+
38
95
 
39
96
 
40
97
 
@@ -69,8 +69,9 @@ module MagicMirror
69
69
  uri = URI.parse("http://localhost:#{FAYE_PORT}/faye")
70
70
  begin
71
71
  Net::HTTP.post_form(uri, :message => message.to_json)
72
- rescue
72
+ rescue Exception => e
73
73
  $stderr.puts "failed to send message to faye server and thus webclient"
74
+ $stderr.puts e.message
74
75
  return false
75
76
  end
76
77
  true
@@ -1,3 +1,3 @@
1
1
  module MagicMirror
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magic_mirror
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - TheNotary
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-20 00:00:00.000000000 Z
11
+ date: 2015-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra