peplum 0.2.4 → 0.2.6
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/lib/peplum/application/services/shared_hash.rb +22 -9
- data/lib/peplum/application.rb +2 -4
- data/lib/peplum/version.rb +1 -1
- data/peplum.gemspec +2 -2
- metadata +4 -5
- data/lib/peplum/application/peers.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0d34847050f1b631cdfdaf01ae41c3632273028a8ab3267519835acb145715f
|
4
|
+
data.tar.gz: 46d816f38aeedf4179aad4a9d77e010e8130bcc8380bf917ce07d5c25208ddc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67cd3f03757fb68dcf605f0899206227afdf8f4be8910f6e3de9c7721bb7e18cb5cdcd42926ebc19acfbe7bce2578be4f4925aca70da85b092997153ca2d2289
|
7
|
+
data.tar.gz: 5fff1d63e60225c540547ed3306f0b8da19ad716773b493f7676059886c52a2e65c82c2f926e0cbddb1455401ac281f9ede9bf30145143de20005be322e28c4e
|
@@ -4,6 +4,8 @@ module Services
|
|
4
4
|
|
5
5
|
class SharedHash
|
6
6
|
|
7
|
+
CONCURRENCY = 20
|
8
|
+
|
7
9
|
def initialize(*)
|
8
10
|
super
|
9
11
|
|
@@ -17,33 +19,41 @@ class SharedHash
|
|
17
19
|
@hash[k]
|
18
20
|
end
|
19
21
|
|
20
|
-
def set( k, v, broadcast = true )
|
21
|
-
|
22
|
+
def set( k, v, broadcast = true, &block )
|
23
|
+
if @hash[k] == v
|
24
|
+
block.call if block_given?
|
25
|
+
return
|
26
|
+
end
|
22
27
|
|
23
28
|
@hash[k] = v
|
24
29
|
call_on_set( k, v )
|
25
30
|
|
26
31
|
if broadcast
|
27
|
-
each_peer do |peer|
|
28
|
-
peer.send( name ).set( k, v, false )
|
32
|
+
each_peer do |peer, iterator|
|
33
|
+
peer.send( name ).set( k, v, false ) { iterator.next }
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
37
|
+
block.call if block_given?
|
32
38
|
nil
|
33
39
|
end
|
34
40
|
|
35
|
-
def delete( k, broadcast = true )
|
36
|
-
|
41
|
+
def delete( k, broadcast = true, &block )
|
42
|
+
if !@hash.include? k
|
43
|
+
block.call if block_given?
|
44
|
+
return
|
45
|
+
end
|
37
46
|
|
38
47
|
@hash.delete( k )
|
39
48
|
call_on_delete( k )
|
40
49
|
|
41
50
|
if broadcast
|
42
|
-
each_peer do |
|
43
|
-
peer.send( name ).delete( k, false )
|
51
|
+
each_peer do |peer, iterator|
|
52
|
+
peer.send( name ).delete( k, false ) { iterator.next }
|
44
53
|
end
|
45
54
|
end
|
46
55
|
|
56
|
+
block.call if block_given?
|
47
57
|
nil
|
48
58
|
end
|
49
59
|
|
@@ -82,7 +92,10 @@ class SharedHash
|
|
82
92
|
end
|
83
93
|
|
84
94
|
def each_peer( &block )
|
85
|
-
|
95
|
+
each = proc do |client, iterator|
|
96
|
+
block.call client, iterator
|
97
|
+
end
|
98
|
+
Raktr.global.create_iterator( Cuboid::Application.application.peers.to_a, CONCURRENCY ).each( each )
|
86
99
|
end
|
87
100
|
|
88
101
|
end
|
data/lib/peplum/application.rb
CHANGED
@@ -5,8 +5,6 @@ require 'peplum/core_ext/array'
|
|
5
5
|
|
6
6
|
module Peplum
|
7
7
|
class Application < Cuboid::Application
|
8
|
-
require 'peplum/application/peers'
|
9
|
-
|
10
8
|
require 'peplum/application/services/shared_hash'
|
11
9
|
require 'peplum/application/services/scheduler'
|
12
10
|
|
@@ -31,7 +29,7 @@ module Peplum
|
|
31
29
|
def initialize(*)
|
32
30
|
super
|
33
31
|
|
34
|
-
@peers = Peers.new
|
32
|
+
@peers = Cuboid::RPC::Server::Instance::Peers.new
|
35
33
|
end
|
36
34
|
|
37
35
|
def run
|
@@ -121,7 +119,7 @@ module Peplum
|
|
121
119
|
objects: groups.pop,
|
122
120
|
peers: peers,
|
123
121
|
master: {
|
124
|
-
url:
|
122
|
+
url: Cuboid::Options.rpc.url,
|
125
123
|
token: Cuboid::Options.datastore.token
|
126
124
|
}
|
127
125
|
},
|
data/lib/peplum/version.rb
CHANGED
data/peplum.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["Tasos Laskos"]
|
9
9
|
spec.email = ["tasos.laskos@gmail.com"]
|
10
10
|
|
11
|
-
spec.summary = "Distributed computing made easy."
|
12
|
-
spec.description = "Distributed computing made easy."
|
11
|
+
spec.summary = "Distributed parallel computing made easy."
|
12
|
+
spec.description = "Distributed parallel computing made easy."
|
13
13
|
spec.homepage = "http://ecsypno.com/"
|
14
14
|
spec.required_ruby_version = ">= 2.6.0"
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peplum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
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: cuboid
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
description: Distributed computing made easy.
|
27
|
+
description: Distributed parallel computing made easy.
|
28
28
|
email:
|
29
29
|
- tasos.laskos@gmail.com
|
30
30
|
executables: []
|
@@ -34,7 +34,6 @@ files:
|
|
34
34
|
- bin/.gitkeep
|
35
35
|
- lib/peplum.rb
|
36
36
|
- lib/peplum/application.rb
|
37
|
-
- lib/peplum/application/peers.rb
|
38
37
|
- lib/peplum/application/services/scheduler.rb
|
39
38
|
- lib/peplum/application/services/shared_hash.rb
|
40
39
|
- lib/peplum/core_ext/array.rb
|
@@ -61,5 +60,5 @@ requirements: []
|
|
61
60
|
rubygems_version: 3.4.13
|
62
61
|
signing_key:
|
63
62
|
specification_version: 4
|
64
|
-
summary: Distributed computing made easy.
|
63
|
+
summary: Distributed parallel computing made easy.
|
65
64
|
test_files: []
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Peplum
|
2
|
-
class Application
|
3
|
-
|
4
|
-
class Peers
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@peers = {}
|
9
|
-
end
|
10
|
-
|
11
|
-
def set( peer_info )
|
12
|
-
peer_info.each do |url, token|
|
13
|
-
next if url == self.self_url
|
14
|
-
@peers[url] = Peplum::Application.connect( url: url, token: token )
|
15
|
-
end
|
16
|
-
|
17
|
-
nil
|
18
|
-
end
|
19
|
-
|
20
|
-
def each( &block )
|
21
|
-
@peers.each do |_, client|
|
22
|
-
block.call client
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def self_url
|
27
|
-
Cuboid::Options.rpc.url
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|