win32-nio 0.2.0 → 0.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: 31fe6e337f6c93527d80360c231b9fb5766e2399
4
- data.tar.gz: bac2e6d821bc01dd2814f8a09b749d476da7d74e
3
+ metadata.gz: d829b0d7823000b4e8c3ce911a129328e0d72db8
4
+ data.tar.gz: 3a23c84c020ac5a28f76623a4768c4882723ce7c
5
5
  SHA512:
6
- metadata.gz: 2985ccd28d539b4433ebf2a163fe98567b596b965ef0259eccba7df26cdf670e6cf5a7cb102b58d7a4dfd3f3d04a52973f527248aba7d16687cd70efb7fe34af
7
- data.tar.gz: eeae941454d811133a0d6cf7e84093a855fbfb992e633ce4e0a895140a6780ca75780f940dfda54cc5b82d0de2d7cc16a836a22bb1a029b359fe681811bedb33
6
+ metadata.gz: 564ff3198da3309c3ed9a6d2ec2136a499e093f71728643b2f397f8805abeb18ddbe60ea6e4a51f1dbc5600d82310a4b8606b3a52cd29c1e6d644817df82203d
7
+ data.tar.gz: 9c4dedc035094a63824032d57675d90fea431bdb740fccaa7297e3bbb9a08105efdeab023ca91513c319b95bccf636f665d480578dfa20489a2cc6dfd5e0df6a
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.2.1 - 21-Jun-2015
2
+ * Fixed some build warnings on mingw32.
3
+
1
4
  == 0.2.0 - 30-Mar-2015
2
5
  * Converted to C code for performance.
3
6
  * The NIO.readlines method now accepts an optional event object as
data/MANIFEST CHANGED
@@ -4,10 +4,7 @@
4
4
  * README
5
5
  * win32-nio.gemspec
6
6
  * benchmarks/win32_nio_benchmarks.rb
7
- * lib/win32/nio.rb
8
- * lib/windows/constants.rb
9
- * lib/windows/functions.rb
10
- * lib/windows/macros.rb
11
- * lib/windows/structs.rb
7
+ * ext/extconf.rb
8
+ * ext/win32/nio.c
12
9
  * test/test_win32_nio_read.rb
13
10
  * test/test_win32_nio_readlines.rb
data/README CHANGED
@@ -31,7 +31,7 @@
31
31
  to implement MRI methods would offer any practical advantage. The answer
32
32
  is a definite maybe.
33
33
 
34
- Functionally, these library does offer something the MRI methods do not,
34
+ Functionally, this library does offer something the MRI methods do not,
35
35
  which is the ability to provide a block or event object that is called
36
36
  when a read is finished.
37
37
 
@@ -51,6 +51,7 @@
51
51
  NIO.read(medium) 0.015000 0.093000 0.108000 ( 0.122542)
52
52
  IO.read(large) 1.654000 0.593000 2.247000 ( 2.355478)
53
53
  NIO.read(large) 0.343000 0.765000 1.108000 ( 1.222567)
54
+
54
55
  IO.readlines(small) 0.125000 0.000000 0.125000 ( 0.119982)
55
56
  NIO.readlines(small) 0.094000 0.015000 0.109000 ( 0.132461)
56
57
  IO.readlines(medium) 1.419000 0.234000 1.653000 ( 1.764216)
data/Rakefile CHANGED
@@ -5,6 +5,7 @@ include RbConfig
5
5
 
6
6
  CLEAN.include(
7
7
  '**/*.gem', # Gem files
8
+ '**/*.txt', # Benchmark files
8
9
  '**/*.rbc', # Rubinius
9
10
  '**/*.o', # C object file
10
11
  '**/*.log', # Ruby extension build log
data/ext/win32/nio.c CHANGED
@@ -16,8 +16,12 @@ void rb_raise_syserr(const char* msg, int errnum){
16
16
  }
17
17
 
18
18
  /*
19
+ * NIO.read(file, length=nil, offset=0, options=nil){ # optional block }
20
+ *
19
21
  * This method is similar to Ruby's IO.read method except that it uses
20
- * native function calls.
22
+ * native function calls. It also optionally accepts a Win32::Event object,
23
+ * signalling it upon completion. If provided it calls a block upon completion
24
+ * of the read.
21
25
  *
22
26
  * Examples:
23
27
  *
@@ -30,10 +34,10 @@ void rb_raise_syserr(const char* msg, int errnum){
30
34
  * # Read 50 bytes starting at offset 10
31
35
  * Win32::NIO.read(file, 50, 10)
32
36
  *
33
- * Note that the + options + that may be passed to this method are limited
34
- * to :encoding, : mode and : event because we're no longer using the open
35
- * function internally.In the case of:mode the only thing that is checked
36
- * for is the presence of the 'b' (binary)mode.
37
+ * Note that the +options+ that may be passed to this method are limited
38
+ * to :encoding, :mode and :event because we're no longer using the open
39
+ * function internally. In the case of :mode the only thing that is checked
40
+ * for is the presence of the 'b' (binary) mode.
37
41
  *
38
42
  * The :event option, if present, must be a Win32::Event object.
39
43
  */
@@ -103,7 +107,7 @@ static VALUE rb_nio_read(int argc, VALUE* argv, VALUE self){
103
107
 
104
108
  if (!NIL_P(v_event)){
105
109
  flags |= FILE_FLAG_OVERLAPPED;
106
- olap.hEvent = (HANDLE)NUM2OFFT(rb_funcall(v_event, rb_intern("handle"), 0, 0));
110
+ olap.hEvent = (HANDLE)(uintptr_t)NUM2OFFT(rb_funcall(v_event, rb_intern("handle"), 0, 0));
107
111
  }
108
112
  }
109
113
  else{
@@ -189,8 +193,12 @@ static VALUE rb_nio_read(int argc, VALUE* argv, VALUE self){
189
193
  }
190
194
 
191
195
  /*
196
+ * NIO.readlines(file, sep="\r\n", event=nil)
197
+ *
192
198
  * Reads the entire file specified by portname as individual lines, and
193
- * returns those lines in an array. Lines are separated by +sep+.
199
+ * returns those lines in an array. Lines are separated by +sep+. The +event+
200
+ * argument must be a Win32::Event if present, and it is signalled upon
201
+ * completion.
194
202
  *
195
203
  * Examples:
196
204
  *
@@ -290,14 +298,14 @@ static VALUE rb_nio_readlines(int argc, VALUE* argv, VALUE self){
290
298
  if (NIL_P(v_event))
291
299
  olap.hEvent = NULL;
292
300
  else
293
- olap.hEvent = (HANDLE)NUM2OFFT(rb_funcall(v_event, rb_intern("handle"), 0, 0));
301
+ olap.hEvent = (HANDLE)(uintptr_t)NUM2OFFT(rb_funcall(v_event, rb_intern("handle"), 0, 0));
294
302
 
295
303
  fse = (FILE_SEGMENT_ELEMENT*)malloc(sizeof(FILE_SEGMENT_ELEMENT) * (page_num + 1));
296
304
  memset(fse, 0, sizeof(FILE_SEGMENT_ELEMENT) * (page_num + 1));
297
305
  v_result = Qnil;
298
306
 
299
307
  for (i = 0; i < page_num; i++)
300
- fse[i].Alignment = (ULONGLONG)base_address + (page_size * i);
308
+ fse[i].Alignment = (ULONGLONG)(uintptr_t)base_address + (page_size * i);
301
309
 
302
310
  rv = ReadFileScatter(h, fse, (DWORD)size, NULL, &olap);
303
311
 
@@ -342,6 +350,6 @@ void Init_nio(){
342
350
  rb_define_singleton_method(cNio, "read", rb_nio_read, -1);
343
351
  rb_define_singleton_method(cNio, "readlines", rb_nio_readlines, -1);
344
352
 
345
- /* 0.2.0: The version of the win32-nio library */
346
- rb_define_const(cNio, "VERSION", rb_str_new2("0.2.0"));
353
+ /* 0.2.1: The version of the win32-nio library */
354
+ rb_define_const(cNio, "VERSION", rb_str_new2("0.2.1"));
347
355
  }
@@ -24,7 +24,7 @@ class TC_Win32_NIO_Read < Test::Unit::TestCase
24
24
  end
25
25
 
26
26
  test "version number is set to expected value" do
27
- assert_equal('0.2.0', Win32::NIO::VERSION)
27
+ assert_equal('0.2.1', Win32::NIO::VERSION)
28
28
  end
29
29
 
30
30
  test "read method basic functionality" do
@@ -34,8 +34,6 @@ class TC_Win32_NIO_Read < Test::Unit::TestCase
34
34
 
35
35
  test "read method accepts a file name and returns a string of the expected size" do
36
36
  assert_kind_of(String, NIO.read(@@file))
37
- p @size
38
- p NIO.read(@@file).size
39
37
  assert_true(NIO.read(@@file).size == @size)
40
38
  end
41
39
 
data/win32-nio.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'win32-nio'
5
- spec.version = '0.2.0'
5
+ spec.version = '0.2.1'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -11,9 +11,8 @@ Gem::Specification.new do |spec|
11
11
  spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
12
12
  spec.extensions = ['ext/extconf.rb']
13
13
 
14
- spec.rubyforge_project = 'Win32Utils'
15
14
  spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
16
- spec.required_ruby_version = '> 1.9.0'
15
+ spec.required_ruby_version = '>= 1.9.3'
17
16
 
18
17
  spec.add_dependency('win32-event', '>= 0.6.0')
19
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: win32-nio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: win32-event
@@ -86,16 +86,16 @@ require_paths:
86
86
  - lib
87
87
  required_ruby_version: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ">"
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 1.9.0
91
+ version: 1.9.3
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  requirements: []
98
- rubyforge_project: Win32Utils
98
+ rubyforge_project:
99
99
  rubygems_version: 2.4.5
100
100
  signing_key:
101
101
  specification_version: 4