elaios 0.1.3 → 0.2.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.
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: []