cuboid 0.2.4.1 → 0.2.5
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +7 -2
- data/lib/cuboid/rpc/server/instance/peers.rb +37 -0
- data/lib/cuboid/rpc/server/instance/service.rb +20 -0
- data/lib/cuboid/rpc/server/instance.rb +6 -2
- data/lib/version +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3b544e8f6eb34d19ba08d26c263435e34321ab174d86ce09da67b4b9651924d
|
4
|
+
data.tar.gz: eb9be57eccb9429514f04c66f36337669a9865d2f634d118eabe38d853ad5980
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab705216690f6891f9530f1252ea6d782208f9707d4b1d6d6e75435489c6c1d6927f699662810f7daffc5dd726ecd0cef00817e4e11b75660699ac7886ab66ee
|
7
|
+
data.tar.gz: 134eaeefd0742c2de4cf22cbe9c7f805d5efb752a9194f737b393b51e1f4354241c2704de27a328fa45b37883c91182134964f495f4038c82e1cd0e89f3b052f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# 0.2.5
|
2
|
+
|
3
|
+
* `RPC::Server::Services::Base` => `RPC::Server::Instance::Service`
|
4
|
+
* Added `RPC::Server::Instance::Peers` as a helper to iterate over peer `Instances`.
|
5
|
+
|
6
|
+
# 0.2.4.2
|
7
|
+
|
8
|
+
* Instance RPC services now decorated with `Server::Services::Base`.
|
9
|
+
|
1
10
|
# 0.2.4.1
|
2
11
|
|
3
12
|
* `Application`: Added `#application=` to help with inheritance.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Cuboid Framework -- a decentralized distributed framework in Ruby.
|
1
|
+
# Cuboid Framework -- a decentralized & distributed computing framework in Ruby.
|
2
2
|
|
3
3
|
## Summary
|
4
4
|
|
@@ -8,6 +8,9 @@ distributed applications in Ruby.
|
|
8
8
|
In hipper terms, you can very easily setup your own specialized _Cloud_ or
|
9
9
|
_Cloud_ within a _Cloud_.
|
10
10
|
|
11
|
+
In older-fashioned terms you can build load-balanced, on-demand, clustered applications and even super-computers --
|
12
|
+
see [Peplum](https://github.com/peplum/).
|
13
|
+
|
11
14
|
It offers:
|
12
15
|
|
13
16
|
* Load-balancing of _**Instances**_ via a network (_**Grid**_) of _**Agents**_.
|
@@ -262,7 +265,9 @@ _You can replace `host1` with `localhost` and run all examples on the same machi
|
|
262
265
|
|
263
266
|
## Users
|
264
267
|
|
265
|
-
* [QMap](https://github.com/qadron/qmap) -- A distributed network mapper/security scanner.
|
268
|
+
* [QMap](https://github.com/qadron/qmap) -- A distributed network mapper/security scanner powered by [nmap](http://nmap.org/).
|
269
|
+
* [Peplum](https://github.com/peplum/peplum) -- A distributed parallel processing solution -- allows you to build Beowulf
|
270
|
+
(or otherwise) clusters and even super-computers.
|
266
271
|
|
267
272
|
## License
|
268
273
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Cuboid
|
2
|
+
module RPC
|
3
|
+
class Server
|
4
|
+
class Instance
|
5
|
+
|
6
|
+
class Peers
|
7
|
+
include Enumerable
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@peers = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def set( peer_info )
|
14
|
+
peer_info.each do |url, token|
|
15
|
+
next if url == self.self_url
|
16
|
+
@peers[url] = Cuboid::Application.application.connect( url: url, token: token )
|
17
|
+
end
|
18
|
+
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def each( &block )
|
23
|
+
@peers.each do |_, client|
|
24
|
+
block.call client
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self_url
|
29
|
+
Cuboid::Options.rpc.url
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Cuboid
|
2
|
+
module RPC
|
3
|
+
class Server
|
4
|
+
class Instance
|
5
|
+
module Service
|
6
|
+
|
7
|
+
attr_reader :name
|
8
|
+
attr_reader :instance
|
9
|
+
|
10
|
+
def initialize( name, instance )
|
11
|
+
@name = name
|
12
|
+
@instance = instance
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -12,6 +12,9 @@ require lib + 'rpc/server/active_options'
|
|
12
12
|
require lib + 'rpc/server/output'
|
13
13
|
require lib + 'rpc/server/application_wrapper'
|
14
14
|
|
15
|
+
require lib + 'rpc/server/instance/service'
|
16
|
+
require lib + 'rpc/server/instance/peers'
|
17
|
+
|
15
18
|
module RPC
|
16
19
|
class Server
|
17
20
|
|
@@ -297,7 +300,7 @@ class Instance
|
|
297
300
|
end
|
298
301
|
end
|
299
302
|
|
300
|
-
# Starts RPC
|
303
|
+
# Starts RPC services.
|
301
304
|
def _run
|
302
305
|
Raktr.global.on_error do |_, e|
|
303
306
|
print_error "Reactor: #{e}"
|
@@ -332,7 +335,8 @@ class Instance
|
|
332
335
|
server.add_handler( 'options', @active_options )
|
333
336
|
|
334
337
|
Cuboid::Application.application.instance_services.each do |name, service|
|
335
|
-
|
338
|
+
service.include Server::Instance::Service
|
339
|
+
si = service.new( name, self )
|
336
340
|
|
337
341
|
Cuboid::Application.application.send :attr_reader, name
|
338
342
|
@application.application.instance_variable_set( "@#{name}".to_sym, si )
|
data/lib/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuboid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tasos Laskos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -296,6 +296,8 @@ files:
|
|
296
296
|
- lib/cuboid/rpc/server/application_wrapper.rb
|
297
297
|
- lib/cuboid/rpc/server/base.rb
|
298
298
|
- lib/cuboid/rpc/server/instance.rb
|
299
|
+
- lib/cuboid/rpc/server/instance/peers.rb
|
300
|
+
- lib/cuboid/rpc/server/instance/service.rb
|
299
301
|
- lib/cuboid/rpc/server/output.rb
|
300
302
|
- lib/cuboid/rpc/server/scheduler.rb
|
301
303
|
- lib/cuboid/ruby.rb
|