zmachine 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.
data/lib/zmachine.rb ADDED
@@ -0,0 +1,171 @@
1
+ require 'forwardable'
2
+
3
+ require 'zmachine/connection'
4
+ require 'zmachine/deferrable'
5
+ require 'zmachine/reactor'
6
+ require 'zmachine/timers'
7
+
8
+ java_import java.lang.ThreadLocal
9
+
10
+ module ZMachine
11
+ class ConnectionError < RuntimeError; end
12
+ class ConnectionNotBound < RuntimeError; end
13
+ class UnknownTimerFired < RuntimeError; end
14
+ class Unsupported < RuntimeError; end
15
+
16
+ def self.reactor
17
+ @reactor ||= ThreadLocal.new
18
+ @reactor.set(Reactor.new) unless @reactor.get
19
+ @reactor.get
20
+ end
21
+
22
+ def self.context
23
+ @context ||= ThreadLocal.new
24
+ @context.set(ZContext.new) unless @context.get
25
+ @context.get
26
+ end
27
+
28
+ class << self
29
+ extend Forwardable
30
+ def_delegator :reactor, :add_shutdown_hook
31
+ def_delegator :reactor, :add_timer
32
+ def_delegator :reactor, :cancel_timer
33
+ def_delegator :reactor, :connect
34
+ def_delegator :reactor, :connection_count
35
+ def_delegator :reactor, :error_handler
36
+ def_delegator :reactor, :next_tick
37
+ def_delegator :reactor, :run
38
+ def_delegator :reactor, :reactor_running?
39
+ def_delegator :reactor, :reconnect
40
+ def_delegator :reactor, :start_server
41
+ def_delegator :reactor, :stop_event_loop
42
+ def_delegator :reactor, :stop_server
43
+ end
44
+
45
+ def self._not_implemented
46
+ raise RuntimeError.new("API call not implemented!")
47
+ end
48
+
49
+ def self.add_periodic_timer(*args, &block)
50
+ interval = args.shift
51
+ callback = args.shift || block
52
+ PeriodicTimer.new(interval, callback)
53
+ end
54
+
55
+ def self.attach(io, handler = nil, *args, &blk)
56
+ _not_implemented
57
+ end
58
+
59
+ def self.bind_connect(bind_addr, bind_port, server, port = nil, handler = nil, *args)
60
+ _not_implemented
61
+ end
62
+
63
+ def self.Callback(object = nil, method = nil, &blk)
64
+ _not_implemented
65
+ end
66
+
67
+ def self.connect_unix_domain(socketname, *args, &blk)
68
+ _not_implemented
69
+ end
70
+
71
+ def self.defer(op = nil, callback = nil, &blk)
72
+ _not_implemented
73
+ end
74
+
75
+ def self.defers_finished?
76
+ _not_implemented
77
+ end
78
+
79
+ def self.disable_proxy(from)
80
+ _not_implemented
81
+ end
82
+
83
+ def self.enable_proxy(from, to, bufsize = 0, length = 0)
84
+ _not_implemented
85
+ end
86
+
87
+ def self.fork_reactor(&block)
88
+ _not_implemented
89
+ end
90
+
91
+ def self.get_max_timers
92
+ _not_implemented
93
+ end
94
+
95
+ def self.heartbeat_interval
96
+ _not_implemented
97
+ end
98
+
99
+ def self.heartbeat_interval=(time)
100
+ _not_implemented
101
+ end
102
+
103
+ def self.open_datagram_socket(address, port, handler = nil, *args)
104
+ _not_implemented
105
+ end
106
+
107
+ def self.popen(cmd, handler = nil, *args)
108
+ _not_implemented
109
+ end
110
+
111
+ def self.reactor_thread?
112
+ _not_implemented
113
+ end
114
+
115
+ def self.run_block(&block)
116
+ pr = proc {
117
+ block.call
118
+ ZMachine::stop_event_loop
119
+ }
120
+ run(&pr)
121
+ end
122
+
123
+ def self.schedule(*a, &b)
124
+ _not_implemented
125
+ end
126
+
127
+ def self.set_descriptor_table_size(n_descriptors = nil)
128
+ _not_implemented
129
+ end
130
+
131
+ def self.set_effective_user(username)
132
+ _not_implemented
133
+ end
134
+
135
+ def self.set_max_timers(ct)
136
+ _not_implemented
137
+ end
138
+
139
+ def self.set_quantum(mills)
140
+ _not_implemented
141
+ end
142
+
143
+ def self.spawn(&block)
144
+ _not_implemented
145
+ end
146
+
147
+ def self.start_unix_domain_server(filename, *args, &block)
148
+ _not_implemented
149
+ end
150
+
151
+ def self.system(cmd, *args, &cb)
152
+ _not_implemented
153
+ end
154
+
155
+ def self.tick_loop(*a, &b)
156
+ _not_implemented
157
+ end
158
+
159
+ def self.watch(io, handler = nil, *args, &blk)
160
+ _not_implemented
161
+ end
162
+
163
+ def self.watch_file(filename, handler = nil, *args)
164
+ _not_implemented
165
+ end
166
+
167
+ def self.watch_process(pid, handler = nil, *args)
168
+ _not_implemented
169
+ end
170
+
171
+ end
data/zmachine.gemspec ADDED
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "zmachine"
5
+ spec.version = "0.1.0"
6
+ spec.authors = ["madvertise Mobile Advertising GmbH"]
7
+ spec.email = ["tech@madvertise.com"]
8
+ spec.description = %q{pure JRuby multi-threaded EventMachine compatible event loop}
9
+ spec.summary = %q{pure JRuby multi-threaded EventMachine compatible event loop}
10
+ spec.homepage = "https://github.com/madvertise/zmachine"
11
+ spec.license = "MIT"
12
+
13
+ spec.files = `git ls-files`.split($/)
14
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.add_development_dependency "bundler", "~> 1.3"
19
+ spec.add_development_dependency "rake"
20
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zmachine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - madvertise Mobile Advertising GmbH
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ none: false
28
+ prerelease: false
29
+ type: :development
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ none: false
44
+ prerelease: false
45
+ type: :development
46
+ description: pure JRuby multi-threaded EventMachine compatible event loop
47
+ email:
48
+ - tech@madvertise.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - echo_client.rb
59
+ - echo_server.rb
60
+ - lib/zmachine.rb
61
+ - lib/zmachine/acceptor.rb
62
+ - lib/zmachine/channel.rb
63
+ - lib/zmachine/connection.rb
64
+ - lib/zmachine/deferrable.rb
65
+ - lib/zmachine/jeromq-0.3.0-SNAPSHOT.jar
66
+ - lib/zmachine/reactor.rb
67
+ - lib/zmachine/tcp_channel.rb
68
+ - lib/zmachine/timers.rb
69
+ - lib/zmachine/zmq_channel.rb
70
+ - zmachine.gemspec
71
+ homepage: https://github.com/madvertise/zmachine
72
+ licenses:
73
+ - MIT
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ segments:
83
+ - 0
84
+ version: '0'
85
+ hash: 2
86
+ none: false
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 0
93
+ version: '0'
94
+ hash: 2
95
+ none: false
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 1.8.24
99
+ signing_key:
100
+ specification_version: 3
101
+ summary: pure JRuby multi-threaded EventMachine compatible event loop
102
+ test_files: []