win32-mmap 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,18 @@
1
+ == 0.2.2 - 16-May-2007
2
+ * Fixed a bug where marshalled data that happened to end with a "\0" would
3
+ cause the getter to fail.
4
+ * Now runs -w clean.
5
+ * Added more tests.
6
+ * Removed the install.rb file. Installation is now handled via the 'rake
7
+ install' task.
8
+ * Updated the MANIFEST file and made it rdoc friendly.
9
+
10
+ == 0.2.1 - 22-Oct-2006
11
+ * Removed the custom memcpy function since that function now does the right
12
+ thing regardless of argument type.
13
+ * Now requires windows-pr 0.5.6 or later (to take advantage of the improved
14
+ memcpy).
15
+
1
16
  == 0.2.0 - 13-Oct-2006
2
17
  * Completely scrapped the old interface and code. It is now pure Ruby and
3
18
  has a much different API, and some internal changes.
@@ -20,4 +35,4 @@
20
35
  * Fixed sprintf() bug in new().
21
36
 
22
37
  == 0.0.1 - 13-Mar-2004
23
- * Initial (Beta) release
38
+ * Initial (Beta) release
data/MANIFEST CHANGED
@@ -1,15 +1,11 @@
1
- CHANGES
2
- MANIFEST
3
- README
4
- install.rb
5
- win32-mmap.gemspec
6
-
7
- doc/mmap.rdoc
8
-
9
- examples/mmap_test.rb
10
- examples/test_client.rb
11
- examples/test_server.rb
12
-
13
- lib/win32/mmap.rb
14
-
15
- test/tc_mmap.rb
1
+ * CHANGES
2
+ * MANIFEST
3
+ * README
4
+ * Rakefile
5
+ * win32-mmap.gemspec
6
+ * doc/mmap.rdoc
7
+ * examples/mmap_test.rb
8
+ * examples/test_client.rb
9
+ * examples/test_server.rb
10
+ * lib/win32/mmap.rb
11
+ * test/tc_mmap.rb
data/README CHANGED
@@ -7,7 +7,8 @@
7
7
 
8
8
  = Installation
9
9
  == Standard Installation
10
- ruby install.rb
10
+ rake test (optional)
11
+ rake install
11
12
 
12
13
  == Gem Installation
13
14
  ruby win32-mmap.gemspec
@@ -58,7 +59,7 @@
58
59
  Ruby's
59
60
 
60
61
  = Copyright
61
- (C) 2003-2006 Daniel J. Berger, All Rights Reserved
62
+ (C) 2003-2007 Daniel J. Berger, All Rights Reserved
62
63
 
63
64
  = Warranty
64
65
  This package is provided "as is" and without any express or
@@ -67,4 +68,4 @@
67
68
 
68
69
  = Authors
69
70
  Daniel J. Berger
70
- Park Heesob
71
+ Park Heesob
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rbconfig'
4
+ include Config
5
+
6
+ desc 'Install the win32-mmap package (non-gem)'
7
+ task :install do
8
+ sitelibdir = CONFIG['sitelibdir']
9
+ installdir = File.join(sitelibdir, 'win32')
10
+ file = 'lib\win32\mmap.rb'
11
+
12
+ Dir.mkdir(installdir) unless File.exists?(installdir)
13
+ FileUtils.cp(file, installdir, :verbose => true)
14
+ end
15
+
16
+ Rake::TestTask.new do |t|
17
+ t.libs << 'test'
18
+ t.verbose = true
19
+ t.warning = true
20
+ t.test_files = FileList['test/tc_mmap.rb']
21
+ end
data/lib/win32/mmap.rb CHANGED
@@ -11,12 +11,7 @@ module Win32
11
11
  # Memory mapped files for MS Windows.
12
12
  #
13
13
  class MMap
14
- VERSION = '0.2.0'
15
-
16
- # This is a slightly different version of memcpy than what's provided
17
- # in the Windows::MSVCRT::Buffer module. The difference is that the
18
- # first argument is an address, not a char buffer.
19
- MEMCPY = Win32API.new('msvcrt', 'memcpy', 'LPL', 'P')
14
+ VERSION = '0.2.2'
20
15
 
21
16
  # All errors generated by Win32::MMap are of type MMap::Error.
22
17
  #
@@ -129,7 +124,7 @@ module Win32
129
124
  # * timeout
130
125
  # * file
131
126
  #
132
- # Please see the documentation for the individual attributes for
127
+ # Please see the documentation on the individual attributes for
133
128
  # further details. Note that, although these are accessors, they
134
129
  # *must* be set in the constructor (if set at all). Setting them
135
130
  # after the call to MMap.new will not have any effect.
@@ -151,6 +146,10 @@ module Win32
151
146
  base_address open autolock timeout
152
147
  /
153
148
 
149
+ @open = nil
150
+ @file = nil
151
+ @autolock = nil
152
+
154
153
  opts.each{ |key, value|
155
154
  key = key.to_s.downcase
156
155
  unless valid.include?(key)
@@ -196,7 +195,7 @@ module Win32
196
195
  end
197
196
 
198
197
  if @open
199
- @mh = OpenFileMapping.call(@access, @inherit, @name)
198
+ @mh = OpenFileMapping(@access, @inherit, @name)
200
199
  else
201
200
  @mh = CreateFileMapping(@fh, @inherit, @protection, 0, @size, @name)
202
201
  end
@@ -307,7 +306,7 @@ module Win32
307
306
  #--
308
307
  # This replaces the getvar/setvar API from 0.1.0.
309
308
  #
310
- def method_missing(method_id, *args)
309
+ def method_missing(method_id, *args)
311
310
  method = method_id.id2name
312
311
  args = args.first if args.length == 1
313
312
 
@@ -319,27 +318,27 @@ module Win32
319
318
  if mmap_lock
320
319
  instance_variable_set("@#{method}", args)
321
320
  marshal = Marshal.dump(@hash)
322
- MEMCPY.call(@address, marshal, marshal.length)
321
+ memcpy(@address, marshal)
323
322
  mmap_unlock
324
323
  end
325
324
  else
326
325
  instance_variable_set("@#{method}", args)
327
326
  marshal = Marshal.dump(@hash)
328
- MEMCPY.call(@address, marshal, marshal.length)
327
+ memcpy(@address, marshal)
329
328
  end
330
329
  else # Getter
331
330
  buf = 0.chr * @size
332
331
  if @autolock
333
332
  if mmap_lock
334
- marshal = memcpy(buf, @address, @size)
335
- hash = Marshal.load(marshal)
333
+ memcpy(buf, @address, @size)
334
+ hash = Marshal.load(buf)
336
335
  val = hash["#{method}"]
337
336
  instance_variable_set("@#{method}", val)
338
337
  mmap_unlock
339
338
  end
340
339
  else
341
- marshal = memcpy(buf, @address, @size)
342
- hash = Marshal.load(marshal)
340
+ memcpy(buf, @address, @size)
341
+ hash = Marshal.load(buf)
343
342
  val = hash["#{method}"]
344
343
  instance_variable_set("@#{method}", val)
345
344
  end
data/test/tc_mmap.rb CHANGED
@@ -1,29 +1,48 @@
1
- #################################################
1
+ #####################################################################
2
2
  # tc_mmap.rb
3
3
  #
4
- # Test suite for the win32-mmap package.
5
- #################################################
6
- Dir.chdir '..' if File.basename(Dir.pwd) == 'test'
7
- $LOAD_PATH.unshift Dir.pwd
8
- $LOAD_PATH.unshift Dir.pwd + '/lib'
9
-
4
+ # Test suite for the win32-mmap package. This should be run via the
5
+ # 'rake test' task.
6
+ #####################################################################
10
7
  require 'test/unit'
11
8
  require 'win32/mmap'
12
9
  include Win32
13
10
 
14
- # The order of the tests matters (for now)
15
11
  class TC_Mmap < Test::Unit::TestCase
16
12
  def setup
17
13
  @mmap = MMap.new(:name => 'test', :size => 100)
18
14
  end
19
15
 
20
16
  def test_version
21
- assert_equal('0.2.0', MMap::VERSION)
17
+ assert_equal('0.2.2', MMap::VERSION)
22
18
  end
23
19
 
24
- def test_dynamic_value
20
+ def test_dynamic_string_value
25
21
  assert_nothing_raised{ @mmap.foo = 'test' }
22
+ assert_nothing_raised{ @mmap.bar = 'alpha123' }
26
23
  assert_equal('test', @mmap.foo)
24
+ assert_equal('alpha123', @mmap.bar)
25
+ end
26
+
27
+ def test_dynamic_integer_value
28
+ assert_nothing_raised{ @mmap.bar = 7 }
29
+ assert_nothing_raised{ @mmap.zero = 0 }
30
+ assert_equal(7, @mmap.bar)
31
+ assert_equal(0, @mmap.zero)
32
+ end
33
+
34
+ def test_dynamic_hash_value
35
+ assert_nothing_raised{ @mmap.ahash = {'foo' => 0} }
36
+ assert_nothing_raised{ @mmap.bhash = {'foo' => 0, 'bar' => 'hello'} }
37
+ assert_equal({'foo' => 0}, @mmap.ahash)
38
+ assert_equal({'foo' => 0, 'bar' => 'hello'}, @mmap.bhash)
39
+ end
40
+
41
+ def test_dynamic_array_value
42
+ assert_nothing_raised{ @mmap.aarray = [1, 'x', 3] }
43
+ assert_nothing_raised{ @mmap.barray = [{1 => 2}, [1,2,3], 'foo'] }
44
+ assert_equal([1, 'x', 3], @mmap.aarray)
45
+ assert_equal([{1=>2}, [1,2,3], 'foo'], @mmap.barray)
27
46
  end
28
47
 
29
48
  def test_valid_options
@@ -85,4 +104,4 @@ class TC_Mmap < Test::Unit::TestCase
85
104
  def teardown
86
105
  @mmap.close
87
106
  end
88
- end
107
+ end
data/win32-mmap.gemspec CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
2
2
 
3
3
  spec = Gem::Specification.new do |gem|
4
4
  gem.name = "win32-mmap"
5
- gem.version = "0.2.0"
5
+ gem.version = "0.2.2"
6
6
  gem.author = "Daniel J. Berger"
7
7
  gem.email = "djberg96@gmail.com"
8
8
  gem.homepage = "http://www.rubyforge.org/projects/win32utils"
@@ -14,8 +14,8 @@ spec = Gem::Specification.new do |gem|
14
14
  gem.files = Dir["lib/win32/*.rb"] + Dir["test/*"] + Dir["[A-Z]*"]
15
15
  gem.files.reject! { |fn| fn.include? "CVS" }
16
16
  gem.require_path = "lib"
17
- gem.extra_rdoc_files = ["README", "CHANGES"]
18
- gem.add_dependency("windows-pr", ">= 0.5.5")
17
+ gem.extra_rdoc_files = ["MANIFEST", "README", "CHANGES"]
18
+ gem.add_dependency("windows-pr", ">= 0.5.6")
19
19
  end
20
20
 
21
21
  if $0 == __FILE__
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.3
3
3
  specification_version: 1
4
4
  name: win32-mmap
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2006-10-13 00:00:00 -06:00
6
+ version: 0.2.2
7
+ date: 2007-05-16 00:00:00 -06:00
8
8
  summary: Memory mapped IO for Windows.
9
9
  require_paths:
10
10
  - lib
@@ -30,13 +30,15 @@ authors:
30
30
  - Daniel J. Berger
31
31
  files:
32
32
  - lib/win32/mmap.rb
33
+ - test/CVS
33
34
  - test/tc_mmap.rb
34
35
  - CHANGES
36
+ - CVS
35
37
  - doc
36
38
  - examples
37
- - install.rb
38
39
  - lib
39
40
  - MANIFEST
41
+ - Rakefile
40
42
  - README
41
43
  - test
42
44
  - win32-mmap.gemspec
@@ -45,6 +47,7 @@ test_files:
45
47
  rdoc_options: []
46
48
 
47
49
  extra_rdoc_files:
50
+ - MANIFEST
48
51
  - README
49
52
  - CHANGES
50
53
  executables: []
@@ -61,5 +64,5 @@ dependencies:
61
64
  requirements:
62
65
  - - ">="
63
66
  - !ruby/object:Gem::Version
64
- version: 0.5.5
67
+ version: 0.5.6
65
68
  version:
data/install.rb DELETED
@@ -1,11 +0,0 @@
1
- # For those who don't like gems...
2
- require 'rbconfig'
3
- require 'ftools'
4
- include Config
5
-
6
- sitelibdir = CONFIG['sitelibdir']
7
- installdir = sitelibdir + '/win32'
8
- file = 'lib\win32\mmap.rb'
9
-
10
- Dir.mkdir(installdir) unless File.exists?(installdir)
11
- File.copy(file, installdir, true)