gio2 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +26 -9
  3. data/ext/gio2/extconf.rb +38 -28
  4. data/ext/gio2/rb-gio2-pollable-source.c +59 -0
  5. data/ext/gio2/{rbgiofilteroutputstream.c → rb-gio2.c} +9 -5
  6. data/ext/gio2/{gio2.c → rb-gio2.h} +5 -10
  7. data/extconf.rb +22 -6
  8. data/lib/gio2.rb +38 -143
  9. data/lib/gio2/deprecated.rb +16 -0
  10. data/lib/gio2/inet-address.rb +33 -0
  11. data/lib/gio2/input-stream.rb +39 -0
  12. data/lib/gio2/loader.rb +244 -0
  13. data/lib/gio2/output-stream.rb +24 -0
  14. data/lib/gio2/pollable-input-stream.rb +51 -0
  15. data/lib/gio2/pollable-output-stream.rb +32 -0
  16. data/lib/gio2/resources.rb +62 -0
  17. data/test/fixture/content-type/x-content/unix-software/autorun.sh +1 -0
  18. data/test/fixture/resource/Rakefile +32 -0
  19. data/test/fixture/resource/logo.png +0 -0
  20. data/test/fixture/resource/ruby-gio2.gresource +0 -0
  21. data/test/fixture/resource/ruby-gio2.gresource.xml +6 -0
  22. data/test/gio2-test-utils.rb +21 -0
  23. data/test/gio2-test-utils/fixture.rb +24 -0
  24. data/test/gio2-test-utils/socket-client.rb +59 -0
  25. data/test/run-test.rb +45 -9
  26. data/test/test-buffered-input-stream.rb +23 -0
  27. data/test/test-charset-converter.rb +23 -0
  28. data/test/test-content-type.rb +31 -0
  29. data/test/test-data-input-stream.rb +21 -0
  30. data/test/test-file-enumerator.rb +26 -0
  31. data/test/test-file-monitor.rb +33 -0
  32. data/test/test-file.rb +28 -0
  33. data/test/test-inet-address.rb +34 -0
  34. data/test/test-input-stream.rb +36 -0
  35. data/test/test-output-stream.rb +39 -0
  36. data/test/test-pollable-input-stream.rb +54 -0
  37. data/test/test-pollable-output-stream.rb +53 -0
  38. data/test/test-resources.rb +58 -0
  39. metadata +49 -107
  40. data/README +0 -34
  41. data/ext/gio2/depend +0 -11
  42. data/ext/gio2/gio2.def +0 -2
  43. data/ext/gio2/gio2.h +0 -30
  44. data/ext/gio2/rbgio.c +0 -133
  45. data/ext/gio2/rbgio2.h +0 -158
  46. data/ext/gio2/rbgio2conversions.h +0 -154
  47. data/ext/gio2/rbgio2private.h +0 -148
  48. data/ext/gio2/rbgioappinfo.c +0 -317
  49. data/ext/gio2/rbgioapplaunchcontext.c +0 -81
  50. data/ext/gio2/rbgioasyncinitable.c +0 -246
  51. data/ext/gio2/rbgioasyncresult.c +0 -41
  52. data/ext/gio2/rbgiobufferedinputstream.c +0 -167
  53. data/ext/gio2/rbgiobufferedoutputstream.c +0 -50
  54. data/ext/gio2/rbgiocancellable.c +0 -180
  55. data/ext/gio2/rbgiocharsetconverter.c +0 -57
  56. data/ext/gio2/rbgiocontenttype.c +0 -131
  57. data/ext/gio2/rbgioconverter.c +0 -113
  58. data/ext/gio2/rbgioconverterinputstream.c +0 -43
  59. data/ext/gio2/rbgioconverteroutputstream.c +0 -43
  60. data/ext/gio2/rbgiodatainputstream.c +0 -309
  61. data/ext/gio2/rbgiodataoutputstream.c +0 -186
  62. data/ext/gio2/rbgiodesktopappinfo.c +0 -87
  63. data/ext/gio2/rbgiodrive.c +0 -266
  64. data/ext/gio2/rbgioemblem.c +0 -52
  65. data/ext/gio2/rbgioemblemedicon.c +0 -65
  66. data/ext/gio2/rbgiofile.c +0 -2045
  67. data/ext/gio2/rbgiofileattribute.c +0 -114
  68. data/ext/gio2/rbgiofileattributeinfo.c +0 -86
  69. data/ext/gio2/rbgiofileattributeinfolist.c +0 -108
  70. data/ext/gio2/rbgiofileattributematcher.c +0 -95
  71. data/ext/gio2/rbgiofiledescriptorbased.c +0 -45
  72. data/ext/gio2/rbgiofileenumerator.c +0 -166
  73. data/ext/gio2/rbgiofileicon.c +0 -41
  74. data/ext/gio2/rbgiofileinfo.c +0 -617
  75. data/ext/gio2/rbgiofileinputstream.c +0 -91
  76. data/ext/gio2/rbgiofileiostream.c +0 -98
  77. data/ext/gio2/rbgiofilemonitor.c +0 -46
  78. data/ext/gio2/rbgiofilenamecompleter.c +0 -73
  79. data/ext/gio2/rbgiofileoutputstream.c +0 -98
  80. data/ext/gio2/rbgiofilterinputstream.c +0 -28
  81. data/ext/gio2/rbgioicon.c +0 -69
  82. data/ext/gio2/rbgioinetaddress.c +0 -118
  83. data/ext/gio2/rbgioinetsocketaddress.c +0 -41
  84. data/ext/gio2/rbgioinitable.c +0 -199
  85. data/ext/gio2/rbgioinputstream.c +0 -341
  86. data/ext/gio2/rbgioio.c +0 -73
  87. data/ext/gio2/rbgioiomodule.c +0 -45
  88. data/ext/gio2/rbgioiomodules.c +0 -47
  89. data/ext/gio2/rbgioioscheduler.c +0 -102
  90. data/ext/gio2/rbgioioschedulerjob.c +0 -121
  91. data/ext/gio2/rbgioiostream.c +0 -107
  92. data/ext/gio2/rbgioloadableicon.c +0 -92
  93. data/ext/gio2/rbgiomemoryinputstream.c +0 -67
  94. data/ext/gio2/rbgiomemoryoutputstream.c +0 -44
  95. data/ext/gio2/rbgiomount.c +0 -286
  96. data/ext/gio2/rbgiomountoperation.c +0 -53
  97. data/ext/gio2/rbgionetworkaddress.c +0 -59
  98. data/ext/gio2/rbgionetworkservice.c +0 -45
  99. data/ext/gio2/rbgiooutputstream.c +0 -331
  100. data/ext/gio2/rbgioresolver.c +0 -230
  101. data/ext/gio2/rbgioseekable.c +0 -91
  102. data/ext/gio2/rbgiosimpleasyncresult.c +0 -152
  103. data/ext/gio2/rbgiosocket.c +0 -390
  104. data/ext/gio2/rbgiosocketaddress.c +0 -34
  105. data/ext/gio2/rbgiosocketaddressenumerator.c +0 -83
  106. data/ext/gio2/rbgiosocketclient.c +0 -207
  107. data/ext/gio2/rbgiosocketconnectable.c +0 -41
  108. data/ext/gio2/rbgiosocketconnection.c +0 -66
  109. data/ext/gio2/rbgiosocketconnectionfactory.c +0 -39
  110. data/ext/gio2/rbgiosocketcontrolmessage.c +0 -82
  111. data/ext/gio2/rbgiosocketlistener.c +0 -246
  112. data/ext/gio2/rbgiosocketservice.c +0 -66
  113. data/ext/gio2/rbgiosrvtarget.c +0 -76
  114. data/ext/gio2/rbgiotcpconnection.c +0 -28
  115. data/ext/gio2/rbgiothemedicon.c +0 -83
  116. data/ext/gio2/rbgiothreadedsocketservice.c +0 -43
  117. data/ext/gio2/rbgiotlscertificate.c +0 -89
  118. data/ext/gio2/rbgiounixconnection.c +0 -71
  119. data/ext/gio2/rbgiounixfdlist.c +0 -115
  120. data/ext/gio2/rbgiounixfdmessage.c +0 -74
  121. data/ext/gio2/rbgiounixinputstream.c +0 -51
  122. data/ext/gio2/rbgiounixmount.c +0 -164
  123. data/ext/gio2/rbgiounixmountmonitor.c +0 -65
  124. data/ext/gio2/rbgiounixmountpoint.c +0 -136
  125. data/ext/gio2/rbgiounixmountpoints.c +0 -58
  126. data/ext/gio2/rbgiounixmounts.c +0 -58
  127. data/ext/gio2/rbgiounixoutputstream.c +0 -51
  128. data/ext/gio2/rbgiounixsocketaddress.c +0 -69
  129. data/ext/gio2/rbgiovfs.c +0 -84
  130. data/ext/gio2/rbgiovolume.c +0 -193
  131. data/ext/gio2/rbgiovolumemonitor.c +0 -77
  132. data/ext/gio2/rbgiozlibcompressor.c +0 -52
  133. data/ext/gio2/rbgiozlibdecompressor.c +0 -45
  134. data/ext/gio2/util.c +0 -303
  135. data/test/test_bufferedinputstream.rb +0 -9
  136. data/test/test_charsetconverter.rb +0 -9
  137. data/test/test_datainputstream.rb +0 -7
  138. data/test/test_fileenumerator.rb +0 -8
  139. data/test/test_filemonitor.rb +0 -17
  140. data/test/test_inetaddress.rb +0 -8
@@ -1,3 +1,19 @@
1
+ # Copyright (C) 2013 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
1
17
  module GLib
2
18
  extend GLib::Deprecatable
3
19
  define_deprecated_const :AppInfo, 'Gio::AppInfo'
@@ -0,0 +1,33 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ class InetAddress
19
+ class << self
20
+ def any(family)
21
+ address = allocate
22
+ address.__send__(:initialize_new_any, family)
23
+ address
24
+ end
25
+
26
+ def loopback(family)
27
+ address = allocate
28
+ address.__send__(:initialize_new_loopback, family)
29
+ address
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ class InputStream
19
+ alias_method :read_raw, :read
20
+ def read(size=nil)
21
+ if size.nil?
22
+ all = "".force_encoding("ASCII-8BIT")
23
+ buffer_size = 8192
24
+ buffer = " ".force_encoding("ASCII-8BIT") * buffer_size
25
+ loop do
26
+ read_bytes = read_raw(buffer, buffer.bytesize)
27
+ all << buffer.byteslice(0, read_bytes)
28
+ break if read_bytes != buffer_size
29
+ end
30
+ all
31
+ else
32
+ buffer = " " * size
33
+ read_bytes = read_raw(buffer, buffer.bytesize)
34
+ buffer.replace(buffer.byteslice(0, read_bytes))
35
+ buffer
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,244 @@
1
+ # Copyright (C) 2013-2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ class Loader < GObjectIntrospection::Loader
19
+ private
20
+ def pre_load(repository, namespace)
21
+ define_content_type_class
22
+ define_mime_type_class
23
+ define_resources_module
24
+ @content_type_guess_for_tree_info = nil
25
+ end
26
+
27
+ def post_load(repository, namespace)
28
+ if @content_type_guess_for_tree_info
29
+ content_type_class = @content_type_class
30
+ info = @content_type_guess_for_tree_info
31
+ file_module = @base_module.const_get("File")
32
+ file_module.__send__(:define_method, "guess_content_types") do
33
+ info.invoke(:arguments => [self]).collect do |type|
34
+ content_type_class.new(type)
35
+ end
36
+ end
37
+ end
38
+ require_extension
39
+ require_libraries
40
+ end
41
+
42
+ def require_extension
43
+ begin
44
+ major, minor, _ = RUBY_VERSION.split(/\./)
45
+ require "#{major}.#{minor}/gio2.so"
46
+ rescue LoadError
47
+ require "gio2.so"
48
+ end
49
+ end
50
+
51
+ def require_libraries
52
+ require "gio2/resources"
53
+ require "gio2/inet-address"
54
+ require "gio2/input-stream"
55
+ require "gio2/output-stream"
56
+ require "gio2/pollable-input-stream"
57
+ require "gio2/pollable-output-stream"
58
+ end
59
+
60
+ def define_content_type_class
61
+ @content_type_class = Class.new do
62
+ def initialize(type)
63
+ @type = type
64
+ end
65
+
66
+ def to_s
67
+ @type
68
+ end
69
+ end
70
+ @base_module.const_set("ContentType", @content_type_class)
71
+ end
72
+
73
+ def define_mime_type_class
74
+ @mime_type_class = Class.new do
75
+ def initialize(type)
76
+ @type = type
77
+ end
78
+
79
+ def to_s
80
+ @type
81
+ end
82
+ end
83
+ @base_module.const_set("MimeType", @mime_type_class)
84
+ end
85
+
86
+ def define_resources_module
87
+ @resources_module = Module.new
88
+ @base_module.const_set("Resources", @resources_module)
89
+ end
90
+
91
+ def load_function_info(info)
92
+ name = info.name
93
+ case name
94
+ when "init"
95
+ # ignore
96
+ when /\Acontent_type_/
97
+ load_function_info_content_type(info)
98
+ when "content_types_get_registered"
99
+ @content_type_class.define_singleton_method(:registered) do
100
+ info.invoke(:arguments => []).collect do |type|
101
+ new(type)
102
+ end
103
+ end
104
+ when /\Aresources_/
105
+ load_function_info_resources(info)
106
+ else
107
+ super
108
+ end
109
+ end
110
+
111
+ def load_function_info_content_type(info)
112
+ name = info.name.gsub(/\Acontent_type_/, "")
113
+ case name
114
+ when "equals", "is_a"
115
+ case name
116
+ when "equals"
117
+ method_name = "=="
118
+ when "is_a"
119
+ method_name = "#{name}?"
120
+ end
121
+ @content_type_class.__send__(:define_method, method_name) do |other|
122
+ if other.is_a?(self.class)
123
+ other = other.to_s
124
+ end
125
+ if other.is_a?(String)
126
+ info.invoke(:arguments => [to_s, other])
127
+ else
128
+ false
129
+ end
130
+ end
131
+ when "from_mime_type"
132
+ @mime_type_class.__send__(:define_method, "content_type") do
133
+ info.invoke(:arguments => [to_s])
134
+ end
135
+ when "get_mime_type"
136
+ mime_type_class = @mime_type_class
137
+ @content_type_class.__send__(:define_method, "mime_type") do
138
+ mime_type = info.invoke(:arguments => [to_s])
139
+ if mime_type
140
+ mime_type_class.new(mime_type)
141
+ else
142
+ nil
143
+ end
144
+ end
145
+ when "guess_for_tree"
146
+ @content_type_guess_for_tree_info = info
147
+ when "guess"
148
+ validate = lambda do |arguments|
149
+ method_name = "#{@content_type_class}.#{name}"
150
+ validate_arguments(info, method_name, arguments)
151
+ end
152
+ @content_type_class.define_singleton_method(:guess) do |*arguments|
153
+ validate.call(arguments)
154
+ info.invoke(:arguments => arguments)
155
+ end
156
+ else
157
+ case name
158
+ when /\Acan_be_/
159
+ method_name = "#{$1}?"
160
+ when /\Ais_/
161
+ method_name = "#{$POSTMATCH}?"
162
+ when /\Aget_/
163
+ method_name = $POSTMATCH
164
+ else
165
+ method_name = name
166
+ end
167
+ @content_type_class.__send__(:define_method, method_name) do
168
+ info.invoke(:arguments => [to_s])
169
+ end
170
+ end
171
+ end
172
+
173
+
174
+ def load_function_info_resources(info)
175
+ method_name = info.name.gsub(/\Aresources_/, "")
176
+ receiver = @resources_module
177
+ validate = lambda do |arguments|
178
+ validate_arguments(info, "#{receiver}.#{method_name}", arguments)
179
+ end
180
+ receiver.define_singleton_method(method_name) do |*arguments|
181
+ validate.call(arguments)
182
+ info.invoke(:arguments => arguments)
183
+ end
184
+ end
185
+
186
+ def load_function_infos(infos, klass)
187
+ case klass.name
188
+ when "Gio::File"
189
+ load_function_infos_file(infos, klass)
190
+ super
191
+ else
192
+ super
193
+ end
194
+ end
195
+
196
+ def load_function_infos_file(infos, klass)
197
+ new_for_commandline_arg_infos = []
198
+
199
+ infos.each do |info|
200
+ name = info.name
201
+ case name
202
+ when /\Anew_for_commandline_arg/
203
+ new_for_commandline_arg_infos << info
204
+ when /\Anew_(?:for_)?/
205
+ method_name = $POSTMATCH
206
+ define_singleton_method(klass, method_name, info)
207
+ else
208
+ define_singleton_method(klass, name, info)
209
+ end
210
+ end
211
+
212
+ define_file_commandline_arg(new_for_commandline_arg_infos, klass)
213
+ end
214
+
215
+ def define_file_commandline_arg(infos, klass)
216
+ method_name = "commandline_arg"
217
+ find_info = lambda do |arguments|
218
+ find_suitable_callable_info(infos, arguments)
219
+ end
220
+ validate = lambda do |info, arguments|
221
+ validate_arguments(info, "#{klass}.#{method_name}", arguments)
222
+ end
223
+ klass.__send__(:define_method, method_name) do |*arguments|
224
+ info = find_info.call(arguments)
225
+ validate.call(info, arguments)
226
+ info.invoke(:arguments => arguments)
227
+ end
228
+ end
229
+
230
+ def error_class_name(info)
231
+ name = info.name
232
+ case name
233
+ when /Enum\z/
234
+ $PREMATCH
235
+ else
236
+ name
237
+ end
238
+ end
239
+
240
+ def error_parent_class(info)
241
+ Error
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,24 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ class OutputStream
19
+ alias_method :write_raw, :write
20
+ def write(data)
21
+ write_raw(data, data.bytesize)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,51 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ module PollableInputStream
19
+ alias_method :create_source_raw, :create_source
20
+ def create_source(&block)
21
+ source = create_source_raw
22
+ source.extend(PollableSource)
23
+ source.set_callback(&block)
24
+ source
25
+ end
26
+
27
+ alias_method :read_nonblocking_raw, :read_nonblocking
28
+ def read_nonblocking(size=nil)
29
+ if size.nil?
30
+ all = "".force_encoding("ASCII-8BIT")
31
+ buffer_size = 8192
32
+ buffer = " ".force_encoding("ASCII-8BIT") * buffer_size
33
+ loop do
34
+ begin
35
+ read_bytes = read_nonblocking_raw(buffer, buffer.bytesize)
36
+ rescue IOError::WouldBlock
37
+ break
38
+ end
39
+ all << buffer.byteslice(0, read_bytes)
40
+ break if read_bytes != buffer_size
41
+ end
42
+ all
43
+ else
44
+ buffer = " " * size
45
+ read_bytes = read_nonblocking_raw(buffer, buffer.bytesize)
46
+ buffer.replace(buffer.byteslice(0, read_bytes))
47
+ buffer
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,32 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gio
18
+ module PollableOutputStream
19
+ alias_method :create_source_raw, :create_source
20
+ def create_source(&block)
21
+ source = create_source_raw
22
+ source.extend(PollableSource)
23
+ source.set_callback(&block)
24
+ source
25
+ end
26
+
27
+ alias_method :write_nonblocking_raw, :write_nonblocking
28
+ def write_nonblocking(data)
29
+ write_nonblocking_raw(data, data.bytesize)
30
+ end
31
+ end
32
+ end