zmachine 0.2.0 → 0.2.1

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
  SHA1:
3
- metadata.gz: 47d9ec01f1c2e637dd7b8bd49e8df5ab2f6c9ec2
4
- data.tar.gz: 9fea025ea55da57597fc31ecb8fc17055afcca9b
3
+ metadata.gz: 1057ef6c0aa36f93cf288ce0f90f6d231888c7b8
4
+ data.tar.gz: bf0799c9baf044fdd371bdbf7d1b71e325cd419d
5
5
  SHA512:
6
- metadata.gz: 3c2709abad08e6337fd8d930e71d7b1d970cd7add92ab40eee2574500de96cdad5bc8c09acb375dd4cd16cb67aa8f992f64db7b05a88eff0f8d92e6ced62c115
7
- data.tar.gz: b0ad9bfe37a314ec281d61c1ff9eb1221153d1f199740ebde8acc9a9a755bbd5e7d25bdf66d3e18410ea2677f74e671093cdd177b0871ac346b42547a1378a44
6
+ metadata.gz: 01187e9649e5f6d48f03cb4ac0a8fd1766e1be10cba3fbfbaefdf49cefce174157c5fb155acd60effb79bc8e8a02a9c20ec3f5ec6779ca44dac90aa5294fddf4
7
+ data.tar.gz: 8ea1eb56b13ce6b7786de2224859e6fdad142e14fe7602bf6a499e16a7853291dea5e504427f4e8a625b8ff5800a51dd76aa97bad52c0de908d82af89481bf40
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- jruby-1.7.6
1
+ jruby
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - jruby
4
+ notifications:
5
+ email: false
6
+ hipchat:
7
+ rooms:
8
+ secure: QEn6sr/TryfI6Kjy39oXnNwfFxvHXbWNk413X0Ocno7FVbddu1DpN3+8FgfUTL7GTCxKyV4cKni9Zp+hiLrlUO15zk3JDZKzLBW24Ie0VCmhhYQAQWuVYatdo2x16LzyyFijNpvNlIjoRoifzIfF7YMNszgy4FxJ4ThFPp34jIY=
data/Gemfile CHANGED
@@ -1,12 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in zmachine.gemspec
4
3
  gemspec
5
4
 
6
- gem 'awesome_print'
7
- gem 'brice'
8
- gem 'fuubar'
9
- gem 'ruby-debug'
10
- gem 'ruby-debug-ide'
11
- gem 'madvertise-ext'
12
- gem 'simplecov'
5
+ gem 'liquid-development'
6
+ gem 'liquid-ext'
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
- # Zmachine
1
+ # ZMachine
2
2
 
3
- ZMachine is a JRuby Event Reactor based on java.nio.Selector and a HashedWheel
4
- timer implementation. ZMachine supports TCP and ZeroMQ sockets natively and
5
- exposes an EventMachine compatible API where possible.
3
+ ZMachine is a pure JRuby multi-threaded event loop based on java.nio.Selector
4
+ and a hashed wheel timer implementation. ZMachine supports TCP and ZeroMQ
5
+ sockets natively and exposes an EventMachine compatible API where possible.
6
+
7
+ [![Build Status](https://travis-ci.org/liquidm/zmachine.png)](https://travis-ci.org/liquidm/zmachine)
8
+ [![Code Climate](https://codeclimate.com/github/liquidm/zmachine.png)](https://codeclimate.com/github/liquidm/zmachine)
9
+ [![Dependency Status](https://gemnasium.com/liquidm/zmachine.png)](https://gemnasium.com/liquidm/zmachine)
6
10
 
7
11
  ## Installation
8
12
 
@@ -20,7 +24,8 @@ Or install it yourself as:
20
24
 
21
25
  ## Usage
22
26
 
23
- TODO: Write usage instructions here
27
+ ZMachine is mostly API compatible with EventMachine. Replace `EM` /
28
+ `EventMachine` with `ZMachine` in your code and it should work out of the box.
24
29
 
25
30
  ## Contributing
26
31
 
data/Rakefile CHANGED
@@ -1,2 +1,3 @@
1
+ require "bundler/setup"
1
2
  require "bundler/gem_tasks"
2
- require "madvertise/tasks"
3
+ require "liquid/tasks"
data/echo_client.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler/setup'
5
- require 'madvertise/boot'
5
+ require 'liquid/boot'
6
6
  require 'zmachine'
7
7
 
8
8
  $log.level = :debug
data/echo_server.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler/setup'
5
- require 'madvertise/boot'
5
+ require 'liquid/boot'
6
6
  require 'zmachine'
7
7
 
8
8
  $log.level = :debug
data/lib/zmachine.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'zmachine/jeromq-0.3.0-SNAPSHOT.jar'
2
2
  java_import org.zeromq.ZContext
3
3
 
4
- require 'madvertise/boot'
4
+ require 'liquid/boot'
5
5
 
6
6
  require 'zmachine/connection'
7
7
  require 'zmachine/deferrable'
@@ -8,10 +8,13 @@ module ZMachine
8
8
  extend Forwardable
9
9
 
10
10
  attr_accessor :channel
11
+ attr_accessor :args
12
+ attr_accessor :block
11
13
 
12
14
  def self.new(*args, &block)
13
15
  allocate.instance_eval do
14
16
  initialize(*args, &block)
17
+ @args, @block = args, block
15
18
  post_init
16
19
  self
17
20
  end
@@ -232,8 +235,8 @@ module ZMachine
232
235
  client = @channel.accept
233
236
  connection_accepted(client) if client.connected?
234
237
  ZMachine.logger.debug("zmachine:connection:#{__method__}", connection: self, client: client) if ZMachine.debug
235
- self.class.new.tap do |connection|
236
- connection.channel = client
238
+ self.class.new(*@args, &@block).tap do |instance|
239
+ instance.channel = client
237
240
  end
238
241
  end
239
242
 
@@ -30,17 +30,19 @@ module ZMachine
30
30
 
31
31
  def bind(address, port_or_type, handler, *args, &block)
32
32
  ZMachine.logger.debug("zmachine:connection_manager:#{__method__}", address: address, port_or_type: port_or_type) if ZMachine.debug
33
- connection = build_connection(Connection, handler, *args, &block)
33
+ connection = build_connection(handler, *args, &block)
34
34
  connection.bind(address, port_or_type)
35
35
  @new_connections << connection
36
+ connection
36
37
  end
37
38
 
38
39
  def connect(address, port_or_type, handler, *args, &block)
39
40
  ZMachine.logger.debug("zmachine:connection_manager:#{__method__}", address: address, port_or_type: port_or_type) if ZMachine.debug
40
- connection = build_connection(Connection, handler, *args, &block)
41
+ connection = build_connection(handler, *args, &block)
41
42
  connection.connect(address, port_or_type)
42
43
  @new_connections << connection
43
44
  yield connection if block_given?
45
+ connection
44
46
  rescue java.nio.channels.UnresolvedAddressException
45
47
  raise ZMachine::ConnectionError.new('unable to resolve server address')
46
48
  end
@@ -110,23 +112,23 @@ module ZMachine
110
112
 
111
113
  private
112
114
 
113
- def build_connection(klass = Connection, handler = nil, *args, &block)
115
+ def build_connection(handler, *args, &block)
114
116
  if handler and handler.is_a?(Class)
115
117
  handler.new(*args, &block)
116
118
  elsif handler and handler.is_a?(Connection)
117
119
  # already initialized connection on reconnect
118
120
  handler
119
121
  elsif handler
120
- connection_from_module(klass, handler).new(*args, &block)
122
+ connection_from_module(handler).new(*args, &block)
121
123
  else
122
- klass.new(*args, &block)
124
+ Connection.new(*args, &block)
123
125
  end
124
126
  end
125
127
 
126
- def connection_from_module(klass, handler)
128
+ def connection_from_module(handler)
127
129
  handler::CONNECTION_CLASS
128
130
  rescue NameError
129
- handler::const_set(:CONNECTION_CLASS, Class.new(klass) { include handler })
131
+ handler::const_set(:CONNECTION_CLASS, Class.new(Connection) { include handler })
130
132
  end
131
133
 
132
134
  end
@@ -25,6 +25,13 @@ module ZMachine
25
25
  @closed = false
26
26
  end
27
27
 
28
+ def identity=(v)
29
+ @socket.identity = v if @socket
30
+ end
31
+ def identity
32
+ @socket ? @socket.identity : nil
33
+ end
34
+
28
35
  def selectable_fd
29
36
  @socket.fd
30
37
  end
@@ -76,20 +83,20 @@ module ZMachine
76
83
  end
77
84
 
78
85
  def send2(a, b)
79
- @socket.send_byte_array(a, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
86
+ @socket.send_byte_array(a, ZMQ::SNDMORE | ZMQ::DONTWAIT)
80
87
  @socket.send_byte_array(b, ZMQ::DONTWAIT)
81
88
  end
82
89
 
83
90
  def send3(a, b, c)
84
- @socket.send_byte_array(a, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
85
- @socket.send_byte_array(b, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
91
+ @socket.send_byte_array(a, ZMQ::SNDMORE | ZMQ::DONTWAIT)
92
+ @socket.send_byte_array(b, ZMQ::SNDMORE | ZMQ::DONTWAIT)
86
93
  @socket.send_byte_array(c, ZMQ::DONTWAIT)
87
94
  end
88
95
 
89
96
  def send4(a, b, c, d)
90
- @socket.send_byte_array(a, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
91
- @socket.send_byte_array(b, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
92
- @socket.send_byte_array(c, ZMQ::DONTWAIT | ZMQ::DONTWAIT)
97
+ @socket.send_byte_array(a, ZMQ::SNDMORE | ZMQ::DONTWAIT)
98
+ @socket.send_byte_array(b, ZMQ::SNDMORE | ZMQ::DONTWAIT)
99
+ @socket.send_byte_array(c, ZMQ::SNDMORE | ZMQ::DONTWAIT)
93
100
  @socket.send_byte_array(d, ZMQ::DONTWAIT)
94
101
  end
95
102
 
data/zmachine.gemspec CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "zmachine"
5
- spec.version = "0.2.0"
5
+ spec.version = "0.2.1"
6
6
  spec.authors = ["LiquidM, Inc."]
7
7
  spec.email = ["opensource@liquidm.com"]
8
8
  spec.description = %q{pure JRuby multi-threaded mostly EventMachine compatible event loop}
9
9
  spec.summary = %q{pure JRuby multi-threaded mostly EventMachine compatible event loop}
10
- spec.homepage = "https://github.com/madvertise/zmachine"
10
+ spec.homepage = "https://github.com/liquidm/zmachine"
11
11
  spec.license = "MIT"
12
12
 
13
13
  spec.files = `git ls-files`.split($/)
@@ -15,9 +15,5 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
16
  spec.require_paths = ["lib"]
17
17
 
18
- spec.add_dependency "madvertise-ext"
19
-
20
- spec.add_development_dependency "bundler", "~> 1.3"
21
- spec.add_development_dependency "rake"
22
- spec.add_development_dependency "rspec"
18
+ spec.add_dependency "liquid-ext"
23
19
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zmachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LiquidM, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-16 00:00:00.000000000 Z
11
+ date: 2013-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: madvertise-ext
14
+ name: liquid-ext
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
@@ -24,48 +24,6 @@ dependencies:
24
24
  version: '0'
25
25
  prerelease: false
26
26
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '1.3'
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ~>
37
- - !ruby/object:Gem::Version
38
- version: '1.3'
39
- prerelease: false
40
- type: :development
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - '>='
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
- prerelease: false
54
- type: :development
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
- prerelease: false
68
- type: :development
69
27
  description: pure JRuby multi-threaded mostly EventMachine compatible event loop
70
28
  email:
71
29
  - opensource@liquidm.com
@@ -76,6 +34,7 @@ files:
76
34
  - .gitignore
77
35
  - .rspec
78
36
  - .ruby-version
37
+ - .travis.yml
79
38
  - Gemfile
80
39
  - LICENSE.txt
81
40
  - README.md
@@ -104,7 +63,7 @@ files:
104
63
  - spec/tcp_channel_spec.rb
105
64
  - spec/zmq_channel_spec.rb
106
65
  - zmachine.gemspec
107
- homepage: https://github.com/madvertise/zmachine
66
+ homepage: https://github.com/liquidm/zmachine
108
67
  licenses:
109
68
  - MIT
110
69
  metadata: {}