ruflet_server 0.0.5 → 0.0.7

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: 2c35513240e60fcb581c31fd046248670f30e035c6c775d6308e55b573cad7f4
4
- data.tar.gz: ae14a3359d2f0ef9d07f46c01a48387993c1aaa85f7432a5c36a98a09f37d752
3
+ metadata.gz: 34a06b652824d1837a37bc693722bcaeea85ff0ce8be5e3ec6bd71a3535ea520
4
+ data.tar.gz: 8430980c8a035a0a5b9bb7c844469473018b1f51a8385207a1dca0902686a1da
5
5
  SHA512:
6
- metadata.gz: af605adfe624b0bd74c0ce6e81a50c962829ac4a145e32e83ea50418798b9d4488dec2961bb4e41d67a8a4d5f28b9f6fd09d287aafc966c09753b6816ada476b
7
- data.tar.gz: cf036c4fc05472ad511ab5a576cf6057a1f5b08d3c40958a8ce3a244228ab440fee99af2cf30964b06793f4e87f382b20c84f9a480876d6b50bcdf0dc8e51a64
6
+ metadata.gz: 0b2d54fa5da1a3c653364d90fa40ae856504565ff98959b7bce46e696e4ae5997d8f46e356c64b6f850a2cefc587bb8ab11f56cd2b357015a93b1e089e9723ae
7
+ data.tar.gz: 64298fa102ecdcdb25c5829998f839511a1f22f78cda4608b5257a849a16d63bcb78b6efbb552e087587972316ecf2a6c525b1b75bfb2c9634cd4e4099936eb7
data/lib/ruflet/server.rb CHANGED
@@ -96,6 +96,33 @@ module Ruflet
96
96
  end
97
97
  end
98
98
 
99
+ def reload_app!
100
+ snapshots = @sessions_mutex.synchronize { @sessions.to_a }
101
+
102
+ snapshots.each do |session_key, current_page|
103
+ ws = @connections_mutex.synchronize { @connections[session_key] }
104
+ next unless ws
105
+
106
+ refreshed_page = Page.new(
107
+ session_id: current_page.session_id,
108
+ client_details: current_page.client_details,
109
+ sender: lambda do |action, payload|
110
+ send_message(ws, action, payload)
111
+ end
112
+ )
113
+ refreshed_page.title = "Ruflet App"
114
+
115
+ @sessions_mutex.synchronize do
116
+ @sessions[session_key] = refreshed_page
117
+ end
118
+
119
+ @app_block.call(refreshed_page)
120
+ refreshed_page.update
121
+ rescue StandardError => e
122
+ warn "reload error: #{e.class}: #{e.message}"
123
+ end
124
+ end
125
+
99
126
  private
100
127
 
101
128
  def trap_stop_signals
@@ -438,9 +465,9 @@ module Ruflet
438
465
  raise
439
466
  end
440
467
 
441
- def on_invoke_control_method(_ws, _payload)
442
- # Client response to invoke_control_method; no server-side handling yet.
443
- nil
468
+ def on_invoke_control_method(ws, payload)
469
+ page = fetch_page(ws)
470
+ page.handle_invoke_method_result(payload)
444
471
  end
445
472
 
446
473
  def on_control_event(ws, payload)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruflet
4
- VERSION = "0.0.5" unless const_defined?(:VERSION)
4
+ VERSION = "0.0.7" unless const_defined?(:VERSION)
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruflet_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - AdamMusa
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.5
18
+ version: 0.0.7
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.5
25
+ version: 0.0.7
26
26
  description: Ruflet WebSocket server runtime compatible with Flet protocol.
27
27
  email:
28
28
  - adammusa2222@gmail.com