magic_mirror 0.1.3 → 0.1.4

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
  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