libvirt_async 0.2.1 → 0.4.0

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
  SHA256:
3
- metadata.gz: 8de28edc9601c79b4013884dc0bb4892456e597c8bab95c1f539ae8a9bfaa14c
4
- data.tar.gz: 86114ec08c3bc72330ff617d5fe0ec44384e8a9d62de1399926c458a63fe8863
3
+ metadata.gz: a09af72032f53f8c42c5b94d07545ea1d83162f27b43cc37bf7b76299c09bce3
4
+ data.tar.gz: 36871662bf7af1a333a0e5209ee280b992bb65c4eca5d57dd9f540b046137f9b
5
5
  SHA512:
6
- metadata.gz: f2a19cbb32cdf3d4da0b59c17678cee58fe635b0015068725a4d069b3c68ac6eafa077692167212a8cc8b7d4f716d8787b6cd80e0c765c39f55d27800958d935
7
- data.tar.gz: 5be038eb7b3c4df91837142bb9cba7efffa845b32012e3d4fb07ede38858bbd4c0c861d293cc4940c7cd3d8a0633d9a1dda8673ebdfa068f6c94f95c28a4dc69
6
+ metadata.gz: 826e01d8be353bc9dbb9e920ebc4c879970218c6c8808d1db77d3fbd2145ef1a77b894ac5ffb0232381ff45f45a0d667ccd84b9d885c8198c014bc78a0c99123
7
+ data.tar.gz: 3d85a9f6c6eb9bc7b8c9eec53c9880c79892cc74bf2798473469397c750a9e0d6e589eb42c63901c3984b5f109567df7ce7d5d78ec9830bbd7c8111e5b1db29f
@@ -0,0 +1,24 @@
1
+ name: Tests
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ ruby: [ '2.6', '2.7', '3.0' ]
14
+ name: Tests with Ruby ${{ matrix.ruby }}
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby }}
20
+ - name: Run tests
21
+ run: |
22
+ gem install bundler
23
+ bundle install
24
+ bundle exec rake
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in libvirt_async.gemspec
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rake/testtask'
3
5
 
data/bin/console CHANGED
File without changes
data/bin/setup CHANGED
File without changes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  class Error < StandardError
3
5
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  class Handle
3
5
  # Represents an event handle (usually a file descriptor). When an event
4
6
  # happens to the handle, we dispatch the event to libvirt via
5
- # Libvirt::event_invoke_handle_callback (feeding it the handle_id we returned
7
+ # Libvirt::Event.invoke_handle_callback (feeding it the handle_id we returned
6
8
  # from add_handle, the file descriptor, the new events, and the opaque
7
9
  # data that libvirt gave us earlier).
8
10
 
@@ -117,11 +119,11 @@ module LibvirtAsync
117
119
 
118
120
  task = Util.create_task do
119
121
  dbg { "#{self.class}#dispatch async starts handle_id=#{handle_id} events=#{events}, fd=#{fd}" }
120
- Libvirt::event_invoke_handle_callback(handle_id, fd, events, opaque)
122
+ Libvirt::Event.invoke_handle_callback(handle_id, fd, events, opaque)
121
123
  dbg { "#{self.class}#dispatch async ends handle_id=#{handle_id} received_events=#{events}, fd=#{fd}" }
122
124
  end
123
125
  dbg { "#{self.class}#dispatch invokes fiber=0x#{task.fiber.object_id.to_s(16)} handle_id=#{handle_id}, events=#{events}, fd=#{fd}" }
124
- task.run
126
+ task.reactor << task.fiber
125
127
 
126
128
  dbg { "#{self.class}#dispatch ends handle_id=#{handle_id}, events=#{events}, fd=#{fd}" }
127
129
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'async'
2
4
  require 'libvirt_async/with_dbg'
3
5
  require 'libvirt_async/util'
@@ -62,16 +64,22 @@ module LibvirtAsync
62
64
  def register_implementations
63
65
  dbg { "#{self.class}#register_implementations" }
64
66
 
65
- Libvirt::event_register_impl(
66
- method(:add_handle).to_proc,
67
- method(:update_handle).to_proc,
68
- method(:remove_handle).to_proc,
69
- method(:add_timer).to_proc,
70
- method(:update_timer).to_proc,
71
- method(:remove_timer).to_proc
67
+ Libvirt::Event.register(
68
+ add_handle: method(:add_handle).to_proc,
69
+ update_handle: method(:update_handle).to_proc,
70
+ remove_handle: method(:remove_handle).to_proc,
71
+ add_timer: method(:add_timer).to_proc,
72
+ update_timer: method(:update_timer).to_proc,
73
+ remove_timer: method(:remove_timer).to_proc,
74
+ schedule: method(:schedule).to_proc
72
75
  )
73
76
  end
74
77
 
78
+ def schedule(&block)
79
+ t = Async::Task.new(Async::Task.current.reactor, nil, &block)
80
+ t.reactor << t.fiber
81
+ end
82
+
75
83
  def add_handle(fd, events, opaque)
76
84
  # add a handle to be tracked by this object. The application is
77
85
  # expected to maintain a list of internal handle IDs (integers); this
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  class LogFormatter
3
5
  LOG_FORMAT = "%s, %s [%d/%s/%s] %s\n".freeze
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  class StreamRead
3
5
  # StreamRead allows to work with stream in non-block read mode.
@@ -44,10 +46,11 @@ module LibvirtAsync
44
46
  raise ArgumentError, 'block must be given' if @callback.nil?
45
47
 
46
48
  dbg { "#{to_s}#call event_add_callback calling" }
49
+ proc = -> (_stream, events, _opaque) { stream_callback(events) }
47
50
  @cb_opaque = stream.event_add_callback(
48
51
  Libvirt::Stream::EVENT_READABLE,
49
- -> (_stream, events, _opaque) { stream_callback(events) },
50
- self
52
+ self,
53
+ &proc
51
54
  )
52
55
  dbg { "#{to_s}#call event_add_callback called" }
53
56
 
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  class Timer
3
5
  # Represents a When a timer expires, we dispatch the event to
4
- # libvirt via Libvirt::event_invoke_timeout_callback (feeding it the timer_id
6
+ # libvirt via Libvirt::Event.invoke_timeout_callback (feeding it the timer_id
5
7
  # we returned from add_timer and the opaque data that libvirt gave us
6
8
  # earlier).
7
9
 
@@ -114,12 +116,12 @@ module LibvirtAsync
114
116
 
115
117
  task = Util.create_task do
116
118
  dbg { "#{self.class}#dispatch async starts timer_id=#{timer_id}, interval=#{interval}" }
117
- Libvirt::event_invoke_timeout_callback(timer_id, opaque)
119
+ Libvirt::Event.invoke_timeout_callback(timer_id, opaque)
118
120
  dbg { "#{self.class}#dispatch async async ends timer_id=#{timer_id}, interval=#{interval}" }
119
121
  end
120
122
 
121
123
  dbg { "#{self.class}#dispatch invokes fiber=0x#{task.fiber.object_id.to_s(16)} timer_id=#{timer_id}, interval=#{interval}" }
122
- task.run
124
+ task.reactor << task.fiber
123
125
 
124
126
  dbg { "#{self.class}#dispatch ends timer_id=#{timer_id}, interval=#{interval}" }
125
127
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
4
  module Util
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LibvirtAsync
2
- VERSION = '0.2.1'
4
+ VERSION = '0.4.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
 
3
5
  module LibvirtAsync
data/lib/libvirt_async.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'logger'
2
4
  require 'libvirt_async/version'
3
5
  require 'libvirt_async/error'
@@ -44,8 +46,8 @@ module LibvirtAsync
44
46
 
45
47
  module_function :build_logger
46
48
 
47
- def use_logger!(io = STDOUT, options = {})
48
- self.logger = build_logger(io, options)
49
+ def use_logger!(io = STDOUT, **options)
50
+ self.logger = build_logger(io, **options)
49
51
  end
50
52
 
51
53
  module_function :use_logger!
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ['lib']
27
27
 
28
- spec.add_dependency 'ruby-libvirt', '~> 0.7'
28
+ spec.add_dependency 'libvirt_ffi'
29
29
  spec.add_dependency 'async', '~> 1.24'
30
30
  spec.add_dependency 'activesupport'
31
31
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libvirt_async
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Talakevich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-05 00:00:00.000000000 Z
11
+ date: 2022-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ruby-libvirt
14
+ name: libvirt_ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.7'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -60,6 +60,7 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
+ - ".github/workflows/tests.yml"
63
64
  - ".gitignore"
64
65
  - ".travis.yml"
65
66
  - CHANGELOG.md
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  - !ruby/object:Gem::Version
104
105
  version: '0'
105
106
  requirements: []
106
- rubygems_version: 3.0.6
107
+ rubygems_version: 3.2.32
107
108
  signing_key:
108
109
  specification_version: 4
109
110
  summary: Libvirt event async implementation.