ruflet_server 0.0.11 → 0.0.13
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 +4 -4
- data/lib/ruflet/server/wire_codec.rb +29 -3
- data/lib/ruflet/server.rb +5 -2
- data/lib/ruflet/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 25450e49973d445cda961a273eda6c37aa2e1245865f4094e9c61a6df5dcfdbb
|
|
4
|
+
data.tar.gz: 607f67ac69a68360e657133f1f674f09ea917cdf53a2fe86bcf685e1022786ac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f4f7c79eda7eeafe780e39e16a90f1196e8f729e802374885f2b283ca7e9f5759f7431747fccd8435ea8d60b8424d19d284c97550cfb1d1f96a952d76c467e63
|
|
7
|
+
data.tar.gz: d659f02495e1d47b9d9272327de7c42788287e0e269b245e2da511a4a7ae5124a7ac1bebf9566292c67567cc7af807beffd28fad84e3693f49dd0248f2ef316c
|
|
@@ -16,7 +16,7 @@ module Ruflet
|
|
|
16
16
|
when Float
|
|
17
17
|
"\xcb".b + [value].pack("G")
|
|
18
18
|
when String
|
|
19
|
-
pack_string(value)
|
|
19
|
+
binary_string?(value) ? pack_binary(value) : pack_string(value)
|
|
20
20
|
when Symbol
|
|
21
21
|
pack_string(value.to_s)
|
|
22
22
|
when Array
|
|
@@ -69,6 +69,23 @@ module Ruflet
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
+
def pack_binary(value)
|
|
73
|
+
bytes = value.to_s.b
|
|
74
|
+
len = bytes.bytesize
|
|
75
|
+
|
|
76
|
+
if len <= 0xff
|
|
77
|
+
"\xc4".b + [len].pack("C") + bytes
|
|
78
|
+
elsif len <= 0xffff
|
|
79
|
+
"\xc5".b + [len].pack("n") + bytes
|
|
80
|
+
else
|
|
81
|
+
"\xc6".b + [len].pack("N") + bytes
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def binary_string?(value)
|
|
86
|
+
value.encoding == Encoding::BINARY || !value.valid_encoding?
|
|
87
|
+
end
|
|
88
|
+
|
|
72
89
|
def pack_array(value)
|
|
73
90
|
len = value.length
|
|
74
91
|
head =
|
|
@@ -178,8 +195,17 @@ module Ruflet
|
|
|
178
195
|
end
|
|
179
196
|
|
|
180
197
|
def read_ext(reader, size)
|
|
181
|
-
reader.read_i8
|
|
182
|
-
reader.read_exact(size)
|
|
198
|
+
type = reader.read_i8
|
|
199
|
+
data = reader.read_exact(size)
|
|
200
|
+
|
|
201
|
+
case type
|
|
202
|
+
when 1, 2, 4
|
|
203
|
+
data.dup.force_encoding("UTF-8")
|
|
204
|
+
when 3
|
|
205
|
+
data.to_i
|
|
206
|
+
else
|
|
207
|
+
data
|
|
208
|
+
end
|
|
183
209
|
end
|
|
184
210
|
end
|
|
185
211
|
|
data/lib/ruflet/server.rb
CHANGED
|
@@ -56,8 +56,9 @@ module Ruflet
|
|
|
56
56
|
def bind_server_socket!(max_attempts: 100)
|
|
57
57
|
requested = @port.to_i
|
|
58
58
|
candidate = requested
|
|
59
|
+
attempts = ENV["RUFLET_STRICT_PORT"] == "1" ? 1 : max_attempts
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
attempts.times do
|
|
61
62
|
begin
|
|
62
63
|
@server_socket = TCPServer.new(@host, candidate)
|
|
63
64
|
@port = candidate
|
|
@@ -70,6 +71,8 @@ module Ruflet
|
|
|
70
71
|
end
|
|
71
72
|
end
|
|
72
73
|
|
|
74
|
+
raise Errno::EADDRINUSE, "Unable to bind port #{requested}" if attempts == 1
|
|
75
|
+
|
|
73
76
|
raise Errno::EADDRINUSE, "Unable to bind starting at #{requested} after #{max_attempts} attempts"
|
|
74
77
|
end
|
|
75
78
|
|
|
@@ -477,7 +480,7 @@ module Ruflet
|
|
|
477
480
|
|
|
478
481
|
def on_invoke_control_method(ws, payload)
|
|
479
482
|
page = fetch_page(ws)
|
|
480
|
-
page.handle_invoke_method_result(payload)
|
|
483
|
+
page.handle_invoke_method_result(Protocol.normalize_invoke_method_result_payload(payload))
|
|
481
484
|
end
|
|
482
485
|
|
|
483
486
|
def on_control_event(ws, payload)
|
data/lib/ruflet/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.0.13
|
|
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.
|
|
18
|
+
version: 0.0.13
|
|
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.
|
|
25
|
+
version: 0.0.13
|
|
26
26
|
description: Ruflet WebSocket server runtime compatible with Flet protocol.
|
|
27
27
|
email:
|
|
28
28
|
- adammusa2222@gmail.com
|