elaios 0.1.3 → 0.2.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
  SHA1:
3
- metadata.gz: d790db6205de1eac878248f3fb57067a35a4e35a
4
- data.tar.gz: ee087c968d7358c51431b1a5cdae4335ec2ae3a3
3
+ metadata.gz: 92df35f3d7d3ddd6bf614acdc31e2ce7ea57bdb2
4
+ data.tar.gz: 0ee4087ffe877bb92659a07583e5bd46e503ecf3
5
5
  SHA512:
6
- metadata.gz: 21d221221c8d646a2e6da5190f33cc8dfaa5d95be6917be5b641a48ca538932af92709574a3e49f7ba89d744c58b4ca1380be7e80f6608f842afb87b66df4e57
7
- data.tar.gz: 1daaf04c865cbd02d49d6214f40eb9cae929f558d6f87e0aa2094b10e388701bd9da06b38576fc09b8200c350329595f5fc42f888d0cdd638affe005c16169a7
6
+ metadata.gz: 4954219790cdeb9e7196b49e907bcb02bba951dd6074ef4802c5ea915b06d9ff6d121a1771cd5de148e39eaccf956bb56d139ccb689e37c0bd0d126ab0763345
7
+ data.tar.gz: 7d7a6b1bd9a18c950b5a6bed78e453af22f500da8c27f90312805aeec0b19f20c0f8c3d7c16fbf1683c26158b301e7aeaa152b9556603c766dd3300e29d17dbd
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Elaios
2
2
 
3
3
  Elaios is a transport-agnostic library for writing JSON-RPC clients and servers.
4
- It can be used over TCP, HTTP, STOMP, and other protocols, and can be used with
4
+ It can be used over TCP, HTTP, STOMP, and other transports, and can be used with
5
5
  threaded-, evented-, or fiber-based code.
6
6
 
7
7
  Furthermore, it is thread-safe, has a very simple API, and well-tested.
@@ -34,32 +34,32 @@ From your Ruby code:
34
34
  require 'elaios'
35
35
  ```
36
36
 
37
- ### Basic client usage
37
+ ### Basic requester (client) usage
38
38
 
39
39
  ```ruby
40
- elaios_client = Elaios::Client.new
40
+ elaios_requester = Elaios::Requester.new
41
41
 
42
42
  # Call a JSON-RPC method and don't expect a response.
43
- elaios_client.foo(['some', 'args'])
43
+ elaios_requester.foo(['some', 'args'])
44
44
 
45
45
  # Call a JSON-RPC method and expect a response.
46
- elaios_client.bar(['some', 'other', 'args']) do |data|
46
+ elaios_requester.bar(['some', 'other', 'args']) do |data|
47
47
  # Do something with the response from the server...
48
48
  end
49
49
 
50
- request_1 = elaios_client.pop
51
- request_2 = elaios_client.pop
50
+ request_1 = elaios_requester.pop
51
+ request_2 = elaios_requester.pop
52
52
  # Send the requests to the server somehow (they will be JSON strings)...
53
53
 
54
54
  # Get a response from the server somehow (it will be a JSON string). This will
55
55
  # trigger the callback above to be called.
56
- elaios_client << response
56
+ elaios_requester << response
57
57
  ```
58
58
 
59
- ### Basic server usage
59
+ ### Basic responder (server) usage
60
60
 
61
61
  ```ruby
62
- elaios_server = Elaios::Server.new
62
+ elaios_server = Elaios::Responder.new
63
63
 
64
64
  elaios_server.foo do |data|
65
65
  # Do some processing here...
@@ -85,12 +85,12 @@ response = elaios_server.pop
85
85
  ### API
86
86
 
87
87
  ```
88
- # --------------
89
- # Elaios::Server
90
- # --------------
88
+ # -----------------
89
+ # Elaios::Responder
90
+ # -----------------
91
91
 
92
- # Create a new Elaios server object.
93
- Elaios::Server#new(options={})
92
+ # Create a new Elaios responder (server) object.
93
+ Elaios::Responder#new(options={})
94
94
 
95
95
  `options` may consist of:
96
96
 
@@ -98,37 +98,37 @@ Elaios::Server#new(options={})
98
98
  * `:logger` - An optional logger object.
99
99
 
100
100
  # Push an object onto the server for processing.
101
- Elaios::Server#push(obj)
102
- Elaios::Server#<<(obj)
103
- Elaios::Server#enq(obj)
101
+ Elaios::Responder#push(obj)
102
+ Elaios::Responder#<<(obj)
103
+ Elaios::Responder#enq(obj)
104
104
 
105
105
  # Pop a response off of the server.
106
- Elaios::Server#pop
107
- Elaios::Server#deq
108
- Elaios::Server#shift
106
+ Elaios::Responder#pop
107
+ Elaios::Responder#deq
108
+ Elaios::Responder#shift
109
109
 
110
110
  # Push an object onto the server, update, and then pop a response off.
111
- Elaios::Server#process(obj)
112
- Elaios::Server#pushpop(obj)
113
- Elaios::Server#push_pop(obj)
111
+ Elaios::Responder#process(obj)
112
+ Elaios::Responder#pushpop(obj)
113
+ Elaios::Responder#push_pop(obj)
114
114
 
115
115
  # Register a handler.
116
- Elaios::Server#method_missing(name, &block)
116
+ Elaios::Responder#method_missing(name, &block)
117
117
 
118
118
  # Generate a success response for sending to the client.
119
- Elaios::Server#res(method, id, data)
120
- Elaios::Server#response(method, id, data)
119
+ Elaios::Responder#res(method, id, data)
120
+ Elaios::Responder#response(method, id, data)
121
121
 
122
122
  # Generate an error response for sending to the client.
123
- Elaios::Server#err(method, id, data)
124
- Elaios::Server#error(method, id, data)
123
+ Elaios::Responder#err(method, id, data)
124
+ Elaios::Responder#error(method, id, data)
125
125
 
126
- # --------------
127
- # Elaios::Client
128
- # --------------
126
+ # -----------------
127
+ # Elaios::Requester
128
+ # -----------------
129
129
 
130
- # Create a new Elaios client object.
131
- Elaios::Client.new(options={})
130
+ # Create a new Elaios requester (client) object.
131
+ Elaios::Requester.new(options={})
132
132
 
133
133
  `options` may consist of:
134
134
 
@@ -136,17 +136,17 @@ Elaios::Client.new(options={})
136
136
  * `:logger` - An optional logger object.
137
137
 
138
138
  # Push an object onto the client for processing.
139
- Elaios::Client.push(obj)
140
- Elaios::Client.<<(obj)
141
- Elaios::Client.enq(obj)
139
+ Elaios::Requester.push(obj)
140
+ Elaios::Requester.<<(obj)
141
+ Elaios::Requester.enq(obj)
142
142
 
143
143
  # Pop a response off of the client.
144
- Elaios::Client#pop
145
- Elaios::Client#deq
146
- Elaios::Client#shift
144
+ Elaios::Requester#pop
145
+ Elaios::Requester#deq
146
+ Elaios::Requester#shift
147
147
 
148
148
  # Call a JSON-RPC method.
149
- Elaios::Client#method_missing(name, args=nil, &block)
149
+ Elaios::Requester#method_missing(name, args=nil, &block)
150
150
  ```
151
151
 
152
152
  ### Threaded TCP client usage
@@ -154,28 +154,28 @@ Elaios::Client#method_missing(name, args=nil, &block)
154
154
  ```ruby
155
155
  # TCP client.
156
156
  socket = TCPSocket.open('0.0.0.0', 5000)
157
- elaios_client = Elaios::Client.new
157
+ elaios_requester = Elaios::Requester.new
158
158
 
159
159
  # Incoming socket data.
160
160
  Thread.new do
161
161
  loop do
162
- elaios_client << socket.gets.chomp
162
+ elaios_requester << socket.gets.chomp
163
163
  end
164
164
  end
165
165
 
166
166
  # Outgoing socket data.
167
167
  Thread.new do
168
168
  loop do
169
- result = elaios_client.pop
169
+ result = elaios_requester.pop
170
170
  socket.puts(result) if result
171
171
  end
172
172
  end
173
173
 
174
174
  # Make a service call and expect no response.
175
- elaios_client.ping('foo')
175
+ elaios_requester.ping('foo')
176
176
 
177
177
  # Make a service call and expect a response.
178
- elaios_client.ping('foo') do |response|
178
+ elaios_requester.ping('foo') do |response|
179
179
  # Do something with the response...
180
180
  end
181
181
  ```
@@ -189,14 +189,14 @@ loop do
189
189
  # New incoming socket connection.
190
190
  Thread.fork(server.accept) do |socket|
191
191
  # We need a new Elaios instance for every incoming connection.
192
- elaios_server = Elaios::Server.new
192
+ elaios_responder = Elaios::Responder.new
193
193
 
194
194
  # Create a server handler.
195
- elaios_server.ping do |data|
195
+ elaios_responder.ping do |data|
196
196
  # Generate some sort of response. Note that we grab the method name and id
197
197
  # from the `data` hash.
198
198
  #
199
- # Also note that within this block, `self` is the `elaios_server` object.
199
+ # Also note within this block, `self` is the `elaios_responder` object.
200
200
  #
201
201
  res(data['method'], data['id'], { foo: 'bar' })
202
202
  end
@@ -204,13 +204,13 @@ loop do
204
204
  # Incoming socket data.
205
205
  Thread.new do
206
206
  loop do
207
- elaios_server << socket.gets.chomp
207
+ elaios_responder << socket.gets.chomp
208
208
  end
209
209
  end
210
210
 
211
211
  # Outgoing socket data.
212
212
  loop do
213
- result = elaios_server.pop
213
+ result = elaios_responder.pop
214
214
  socket.puts(result) if result
215
215
  sleep(Float::MIN)
216
216
  end
@@ -8,5 +8,11 @@ require 'elaios/version'
8
8
  module Elaios
9
9
  end
10
10
 
11
- require 'elaios/server'
12
- require 'elaios/client'
11
+ require 'elaios/requester'
12
+ require 'elaios/responder'
13
+
14
+ module Elaios
15
+ # For backwards-compatibility.
16
+ Elaios::Client = Elaios::Requester
17
+ Elaios::Server = Elaios::Responder
18
+ end
@@ -1,4 +1,4 @@
1
- class Elaios::Client
1
+ class Elaios::Requester
2
2
  attr_reader :logger
3
3
 
4
4
  def initialize(options={})
@@ -1,4 +1,4 @@
1
- class Elaios::Server
1
+ class Elaios::Responder
2
2
  attr_reader :logger
3
3
 
4
4
  def initialize(options={})
@@ -1,3 +1,3 @@
1
1
  module Elaios
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elaios
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Jungemann
@@ -139,8 +139,8 @@ files:
139
139
  - bin/setup
140
140
  - elaios.gemspec
141
141
  - lib/elaios.rb
142
- - lib/elaios/client.rb
143
- - lib/elaios/server.rb
142
+ - lib/elaios/requester.rb
143
+ - lib/elaios/responder.rb
144
144
  - lib/elaios/version.rb
145
145
  homepage: https://github.com/rjungemann/elaios
146
146
  licenses: []