mutex_m 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2cbc119ce68a11fe9437d7996558cbe8442a70993f81c041a3d275ce72190781
4
+ data.tar.gz: 92174be4a48caf6bb633a5eacf27913a67a48bc0fca21dee595173692f5decc7
5
+ SHA512:
6
+ metadata.gz: '068be6b85e50d6ea6c01856db3b451f626f8fbbbb60a4d3bf8645a84ae8e89becb910bfc6d5aecc5a957549661caa161a58818b7d5bba871ef5e0784f7f8ae48'
7
+ data.tar.gz: 44677a56e80a8ef21f4bc12bd2d750b4a51935f2c71ed33b0a2d70921ce7a378068c125f47132111608dd7020d767ece9bca4a8c3e7e244a224eb7076fdfa9fe
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ Gemfile.lock
@@ -0,0 +1,6 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.5.1
5
+ - ruby-head
6
+ before_install: gem install bundler -v 1.16.2
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions
5
+ are met:
6
+ 1. Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ 2. Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+
12
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22
+ SUCH DAMAGE.
@@ -0,0 +1,59 @@
1
+ # Mutex_m
2
+
3
+ When 'mutex_m' is required, any object that extends or includes Mutex_m will be treated like a Mutex.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'mutex_m'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install mutex_m
20
+
21
+ ## Usage
22
+
23
+ Start by requiring the standard library Mutex_m:
24
+
25
+ ```
26
+ require "mutex_m.rb"
27
+ ```
28
+
29
+ From here you can extend an object with Mutex instance methods:
30
+
31
+ ```
32
+ obj = Object.new
33
+ obj.extend Mutex_m
34
+ ```
35
+
36
+ Or mixin Mutex_m into your module to your class inherit Mutex instance methods.
37
+
38
+ ```
39
+ class Foo
40
+ include Mutex_m
41
+ # ...
42
+ end
43
+ obj = Foo.new
44
+ # this obj can be handled like Mutex
45
+ g```
46
+
47
+ ## Development
48
+
49
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
50
+
51
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
52
+
53
+ ## Contributing
54
+
55
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ruby/mutex_m.
56
+
57
+ ## License
58
+
59
+ The gem is available as open source under the terms of the [2-Clause BSD License](https://opensource.org/licenses/BSD-2-Clause).
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/test_*.rb"]
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require_relative "../lib/mutex_m"
5
+
6
+ require "irb"
7
+ IRB.start(__FILE__)
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # mutex_m.rb -
4
+ # $Release Version: 3.0$
5
+ # $Revision: 1.7 $
6
+ # Original from mutex.rb
7
+ # by Keiju ISHITSUKA(keiju@ishitsuka.com)
8
+ # modified by matz
9
+ # patched by akira yamada
10
+ #
11
+ # --
12
+
13
+ # = mutex_m.rb
14
+ #
15
+ # When 'mutex_m' is required, any object that extends or includes Mutex_m will
16
+ # be treated like a Mutex.
17
+ #
18
+ # Start by requiring the standard library Mutex_m:
19
+ #
20
+ # require "mutex_m.rb"
21
+ #
22
+ # From here you can extend an object with Mutex instance methods:
23
+ #
24
+ # obj = Object.new
25
+ # obj.extend Mutex_m
26
+ #
27
+ # Or mixin Mutex_m into your module to your class inherit Mutex instance
28
+ # methods --- remember to call super() in your class initialize method.
29
+ #
30
+ # class Foo
31
+ # include Mutex_m
32
+ # def initialize
33
+ # # ...
34
+ # super()
35
+ # end
36
+ # # ...
37
+ # end
38
+ # obj = Foo.new
39
+ # # this obj can be handled like Mutex
40
+ #
41
+ module Mutex_m
42
+
43
+ VERSION = "0.1.0"
44
+
45
+ def Mutex_m.define_aliases(cl) # :nodoc:
46
+ cl.module_eval %q{
47
+ alias locked? mu_locked?
48
+ alias lock mu_lock
49
+ alias unlock mu_unlock
50
+ alias try_lock mu_try_lock
51
+ alias synchronize mu_synchronize
52
+ }
53
+ end
54
+
55
+ def Mutex_m.append_features(cl) # :nodoc:
56
+ super
57
+ define_aliases(cl) unless cl.instance_of?(Module)
58
+ end
59
+
60
+ def Mutex_m.extend_object(obj) # :nodoc:
61
+ super
62
+ obj.mu_extended
63
+ end
64
+
65
+ def mu_extended # :nodoc:
66
+ unless (defined? locked? and
67
+ defined? lock and
68
+ defined? unlock and
69
+ defined? try_lock and
70
+ defined? synchronize)
71
+ Mutex_m.define_aliases(singleton_class)
72
+ end
73
+ mu_initialize
74
+ end
75
+
76
+ # See Mutex#synchronize
77
+ def mu_synchronize(&block)
78
+ @_mutex.synchronize(&block)
79
+ end
80
+
81
+ # See Mutex#locked?
82
+ def mu_locked?
83
+ @_mutex.locked?
84
+ end
85
+
86
+ # See Mutex#try_lock
87
+ def mu_try_lock
88
+ @_mutex.try_lock
89
+ end
90
+
91
+ # See Mutex#lock
92
+ def mu_lock
93
+ @_mutex.lock
94
+ end
95
+
96
+ # See Mutex#unlock
97
+ def mu_unlock
98
+ @_mutex.unlock
99
+ end
100
+
101
+ # See Mutex#sleep
102
+ def sleep(timeout = nil)
103
+ @_mutex.sleep(timeout)
104
+ end
105
+
106
+ private
107
+
108
+ def mu_initialize # :nodoc:
109
+ @_mutex = Thread::Mutex.new
110
+ end
111
+
112
+ def initialize(*args) # :nodoc:
113
+ mu_initialize
114
+ super
115
+ end
116
+ end
@@ -0,0 +1,27 @@
1
+ begin
2
+ require_relative "lib/mutex_m"
3
+ rescue LoadError
4
+ # for Ruby core repository
5
+ require_relative "mutex_m"
6
+ end
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "mutex_m"
10
+ spec.version = Mutex_m::VERSION
11
+ spec.authors = ["Keiju ISHITSUKA"]
12
+ spec.email = ["keiju@ruby-lang.org"]
13
+
14
+ spec.summary = %q{Mixin to extend objects to be handled like a Mutex.}
15
+ spec.description = %q{Mixin to extend objects to be handled like a Mutex.}
16
+ spec.homepage = "https://github.com/ruby/mutex_m"
17
+ spec.license = "BSD-2-Clause"
18
+
19
+ spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "lib/mutex_m.rb", "mutex_m.gemspec"]
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "test-unit"
27
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mutex_m
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Keiju ISHITSUKA
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Mixin to extend objects to be handled like a Mutex.
56
+ email:
57
+ - keiju@ruby-lang.org
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".travis.yml"
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - bin/console
69
+ - bin/setup
70
+ - lib/mutex_m.rb
71
+ - mutex_m.gemspec
72
+ homepage: https://github.com/ruby/mutex_m
73
+ licenses:
74
+ - BSD-2-Clause
75
+ metadata: {}
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements: []
91
+ rubyforge_project:
92
+ rubygems_version: 2.7.6
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: Mixin to extend objects to be handled like a Mutex.
96
+ test_files: []