io_request 1.1.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da825a2b5c4621543a1c66625eebf871852a07a5ed51db4fa3df51a26ed23874
4
- data.tar.gz: a47015fa8c95cad7baadf55d0ef43921272c9fa4898d4a78f238b6f48ca15842
3
+ metadata.gz: 5bc70dc523aa523749a9ff7ced4fb1e59243a70ab963026b76c0feada184adad
4
+ data.tar.gz: fd2d048ddf79f0102bbc39ab72ad98529b090d40a2f681b72bb14d2149bea241
5
5
  SHA512:
6
- metadata.gz: 9a4ccf24e708cfe1bf1d428f780be958a54516dd57dbfc25b450eba57b4ea111dfcc09f88a1fdfefe12eb55bf450541665f3e0a3eb3458406c9958d843f8af3b
7
- data.tar.gz: 044ff5beb060aa71aa95971f3d4ad6eb2b0dab452a3c2df16460adafc8adae690a8d13f2a9993dcf32d43020abd03cbc041ac23d7aec97674247b12aead5bed7
6
+ metadata.gz: 4e348c7d960286264707730c07f46ed6de58edd8b27653271aa4b76f87718c1ca623364299a409d4179c71083158c076d9658dcfe7a7f1ef6b62610eae797da3
7
+ data.tar.gz: 5d01d75cfdd3eea6b39b1e1a74556bd260ded06d699f72cbe22f1812d5680a3d4621170116d2bfc7700d0c6a8793c1e34959dd039fd2bb94566abae439816950
data/Gemfile.lock CHANGED
@@ -1,28 +1,29 @@
1
- PATH
2
- remote: .
3
- specs:
4
- io_request (1.1.0)
5
- json (~> 2.0)
6
- logger (~> 1.4)
7
- timeout-extensions (~> 0.1.1)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- json (2.2.0)
13
- logger (1.4.1)
14
- minitest (5.13.0)
15
- rake (10.5.0)
16
- timeout-extensions (0.1.1)
17
-
18
- PLATFORMS
19
- x64-mingw32
20
-
21
- DEPENDENCIES
22
- bundler (~> 2.0)
23
- io_request!
24
- minitest (~> 5.0)
25
- rake (~> 10.0)
26
-
27
- BUNDLED WITH
28
- 2.0.2
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ io_request (1.2.0)
5
+ json (~> 2.0)
6
+ logger (~> 1.4)
7
+ timeout-extensions (~> 0.1.1)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ json (2.3.0)
13
+ logger (1.4.1)
14
+ minitest (5.13.0)
15
+ rake (13.0.1)
16
+ timeout-extensions (0.1.1)
17
+
18
+ PLATFORMS
19
+ ruby
20
+ x64-mingw32
21
+
22
+ DEPENDENCIES
23
+ bundler (~> 2.0)
24
+ io_request!
25
+ minitest (~> 5.0)
26
+ rake (~> 13.0)
27
+
28
+ BUNDLED WITH
29
+ 2.0.2
data/io_request.gemspec CHANGED
@@ -1,37 +1,37 @@
1
- lib = File.expand_path("lib", __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "io_request/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "io_request"
7
- spec.version = IORequest::VERSION
8
- spec.authors = ["Fizvlad"]
9
- spec.email = ["fizvlad@mail.ru"]
10
-
11
- spec.summary = "Small gem to create JSON request/response type of connection over IO object"
12
- spec.homepage = "https://github.com/fizvlad/io-request-rb"
13
- spec.license = "MIT"
14
-
15
- spec.required_ruby_version = ">=2.3.1"
16
-
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/fizvlad/io-request-rb"
19
- spec.metadata["changelog_uri"] = "https://github.com/fizvlad/io-request-rb/releases"
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
- end
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_development_dependency "bundler", "~> 2.0"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
- spec.add_development_dependency "minitest", "~> 5.0"
33
-
34
- spec.add_runtime_dependency "logger", "~>1.4"
35
- spec.add_runtime_dependency "timeout-extensions", "~>0.1.1"
36
- spec.add_runtime_dependency "json", "~>2.0"
37
- end
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "io_request/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "io_request"
7
+ spec.version = IORequest::VERSION
8
+ spec.authors = ["Fizvlad"]
9
+ spec.email = ["fizvlad@mail.ru"]
10
+
11
+ spec.summary = "Small gem to create JSON request/response type of connection over IO object"
12
+ spec.homepage = "https://github.com/fizvlad/io-request-rb"
13
+ spec.license = "MIT"
14
+
15
+ spec.required_ruby_version = ">=2.3.1"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/fizvlad/io-request-rb"
19
+ spec.metadata["changelog_uri"] = "https://github.com/fizvlad/io-request-rb/releases"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 2.0"
31
+ spec.add_development_dependency "rake", "~> 13.0"
32
+ spec.add_development_dependency "minitest", "~> 5.0"
33
+
34
+ spec.add_runtime_dependency "logger", "~>1.4"
35
+ spec.add_runtime_dependency "timeout-extensions", "~>0.1.1"
36
+ spec.add_runtime_dependency "json", "~>2.0"
37
+ end
@@ -33,7 +33,7 @@ module IORequest
33
33
  # @option options [Integer, Float] timeout timeout for {Request#join}.
34
34
  #
35
35
  # @yieldparam request [Response] response for request.
36
- #
36
+ #
37
37
  # @return [Request]
38
38
  def request(data: {}, sync: false, timeout: nil, &block)
39
39
  req = Request.new(data)
@@ -79,12 +79,12 @@ module IORequest
79
79
  # Handle incoming request.
80
80
  def handle_in_request(req)
81
81
  IORequest.debug("Handling request ##{req.id}", prog_name)
82
- in_thread do
82
+ in_thread(name: "request_handler") do
83
83
  responder = find_responder(req)
84
84
  data = nil
85
85
  data = begin
86
86
  if responder
87
- responder.call(req)
87
+ responder.call(req, self)
88
88
  else
89
89
  IORequest.warn "Responder not found!"
90
90
  nil
@@ -112,7 +112,7 @@ module IORequest
112
112
  # If block is not provided it's totally ok
113
113
  block = @out_requests.delete(req)
114
114
  if block
115
- in_thread do
115
+ in_thread(name: "response_handle") do
116
116
  begin
117
117
  block.call(res)
118
118
  rescue Exception => e
@@ -131,12 +131,12 @@ module IORequest
131
131
  break
132
132
  end
133
133
  end
134
-
134
+
135
135
  result
136
136
  end
137
137
 
138
138
  # Send data.
139
- #
139
+ #
140
140
  # @param [Hash]
141
141
  def send(data)
142
142
  IORequest.debug("Sending hash: #{data.inspect}", prog_name)
@@ -24,8 +24,12 @@ module IORequest
24
24
 
25
25
  # Runs block with provided arguments forwarded as arguments in separate thread.
26
26
  #
27
+ # All the inline args will be passed to block.
28
+ #
29
+ # @param thread_name [String] thread name.
30
+ #
27
31
  # @return [Thread]
28
- def in_thread(*args, &block)
32
+ def in_thread(*args, name: nil, &block)
29
33
  @_MultiThread_threads ||= []
30
34
  @_MultiThread_mutex ||= Mutex.new
31
35
  # Synchronizing addition/deletion of new threads. That's important
@@ -40,14 +44,15 @@ module IORequest
40
44
  end
41
45
  end
42
46
  @_MultiThread_threads << new_thread
47
+ new_thread.name = name if name
43
48
  new_thread
44
- end
49
+ end
45
50
  end
46
51
 
47
52
  # For each running thread.
48
53
  def each_thread(&block)
49
54
  @_MultiThread_threads ||= []
50
-
55
+
51
56
  @_MultiThread_threads.each(&block)
52
57
  end
53
58
 
@@ -1,4 +1,4 @@
1
- module IORequest
2
- # Gem version.
3
- VERSION = "1.1.0"
4
- end
1
+ module IORequest
2
+ # Gem version.
3
+ VERSION = "1.2.0"
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io_request
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fizvlad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-14 00:00:00.000000000 Z
11
+ date: 2020-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
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: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement