gio2 3.2.0 → 3.2.1

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: e179eb5c12e1412c6528cc2ba2c2169a9f355e23
4
- data.tar.gz: 3b895504ac8f0841fe3ad6ef95969657f56609bd
3
+ metadata.gz: cea2c870cad8657af45c2f6c381d68e8574fb9dc
4
+ data.tar.gz: 7db4a4767a59e7013d408779190a8da1f9c320f6
5
5
  SHA512:
6
- metadata.gz: b37ba98b86c8b8ee2fe31654033fd3d3a790eb5b7fc33d37d4133da980d360ee590e31c774108403b1e2fe1d3821c22b7000ec3053724730c0f8ce78091feb0f
7
- data.tar.gz: a3e8ee4a8092d9103a7b74e58de8e441172970842673684e2195dbb0ed32cdcda7ef7eec369475d7964429004f4efd5955099d0a6c1f5ac21eafd9e5f083f0e2
6
+ metadata.gz: b937292b4cd10f4818af234058057772054b6dcaf2b7228f5d522a3ee161e641fa0094707ac1972d59c52ac8a4bded17f708aabd39728c07f688b71e3ae0a253
7
+ data.tar.gz: 4258337c900c991d304a81c42d10112118a09d7e5724d41a91c1262c125c5b8b7b2ec9020a5a4a9b7d8ff780248d0b0bca0116be8337f3ef79f4a7a844e2bbfb
@@ -23,7 +23,7 @@ module Gio
23
23
  buffer_size = 8192
24
24
  buffer = " ".force_encoding("ASCII-8BIT") * buffer_size
25
25
  loop do
26
- read_bytes = read_raw_compatible(buffer)
26
+ _, read_bytes = read_all_raw_compatible(buffer)
27
27
  all << buffer.byteslice(0, read_bytes)
28
28
  break if read_bytes != buffer_size
29
29
  end
@@ -36,6 +36,14 @@ module Gio
36
36
  end
37
37
  end
38
38
 
39
+ alias_method :read_all_raw, :read_all
40
+ def read_all(size)
41
+ buffer = " " * size
42
+ _, read_bytes = read_all_raw_compatible(buffer)
43
+ buffer.replace(buffer.byteslice(0, read_bytes))
44
+ buffer
45
+ end
46
+
39
47
  private
40
48
  def read_raw_compatible(buffer)
41
49
  if (GLib::VERSION <=> [2, 36, 0]) >= 0
@@ -44,5 +52,13 @@ module Gio
44
52
  read_raw(buffer, buffer.bytesize)
45
53
  end
46
54
  end
55
+
56
+ def read_all_raw_compatible(buffer)
57
+ if (GLib::VERSION <=> [2, 36, 0]) >= 0
58
+ read_all_raw(buffer)
59
+ else
60
+ read_all_raw(buffer, buffer.bytesize)
61
+ end
62
+ end
47
63
  end
48
64
  end
data/lib/gio2/loader.rb CHANGED
@@ -187,5 +187,19 @@ module Gio
187
187
  def error_parent_class(info)
188
188
  Error
189
189
  end
190
+
191
+ def should_unlock_gvl?(function_info, klass)
192
+ case klass.name
193
+ when "Gio::InputStream"
194
+ case function_info.name
195
+ when "read", "read_all"
196
+ true
197
+ else
198
+ false
199
+ end
200
+ else
201
+ false
202
+ end
203
+ end
190
204
  end
191
205
  end
@@ -26,11 +26,35 @@ class TestInputStream < Test::Unit::TestCase
26
26
  teardown_socket_client
27
27
  end
28
28
 
29
- def test_read
30
- data = "Hello\n"
29
+ sub_test_case("#read") do
30
+ def test_with_size
31
+ data = "Hello\n"
32
+ client = @server.accept
33
+ client.write(data)
34
+ client.flush
35
+ assert_equal("Hell", @stream.read(4))
36
+ end
37
+
38
+ def test_without_size
39
+ data = "Hello\n"
40
+ client = @server.accept
41
+ client.write(data)
42
+ client.flush
43
+ client.close
44
+ assert_equal(data, @stream.read)
45
+ end
46
+ end
47
+
48
+ def test_read_all
31
49
  client = @server.accept
32
- client.write(data)
50
+ client.write("He")
33
51
  client.flush
34
- assert_equal(data, @stream.read)
52
+ thread = Thread.new do
53
+ sleep(0.1)
54
+ client.write("llo")
55
+ client.flush
56
+ end
57
+ assert_equal("Hell", @stream.read_all(4))
58
+ thread.join
35
59
  end
36
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gio2
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Ruby-GNOME2 Project Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-07 00:00:00.000000000 Z
11
+ date: 2017-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glib2
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
19
+ version: 3.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.0
26
+ version: 3.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: gobject-introspection
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.0
33
+ version: 3.2.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.0
40
+ version: 3.2.1
41
41
  description: Ruby/GIO2 is a Ruby binding of gio-2.x.
42
42
  email: ruby-gnome2-devel-en@lists.sourceforge.net
43
43
  executables: []