zmachine 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []