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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cbd03ad31260b2a970bf3b4d3955a9b5a3aa9f8b8bbbffe5b49c1b07fdca539
4
- data.tar.gz: cb85849f3733ba341a32aaf2628a5216df125f0fe686b035765c8584e4ad8d51
3
+ metadata.gz: a0d34847050f1b631cdfdaf01ae41c3632273028a8ab3267519835acb145715f
4
+ data.tar.gz: 46d816f38aeedf4179aad4a9d77e010e8130bcc8380bf917ce07d5c25208ddc0
5
5
  SHA512:
6
- metadata.gz: 24cc90e163171f3a1ce7622ffef358015a8e3cea47293be4f9be814589196057d1e44213c7c9a4d7b77e3fed5476cddc9f10d1edac3b2155b9cc339e94527dad
7
- data.tar.gz: efd88627c08d5b5048dd0940366e54f48c20c170dbe22749719574b09626e326909cda7abf730d85e145cff5173403631e4061f32ba23227498c2fdfecd56ea7
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
- return if @hash[k] == v
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
- return if !@hash.include? k
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 |_, peer|
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
- Cuboid::Application.application.peers.each( &block )
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
@@ -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: Cuboid::Options.rpc.url,
122
+ url: Cuboid::Options.rpc.url,
125
123
  token: Cuboid::Options.datastore.token
126
124
  }
127
125
  },
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Peplum
4
- VERSION = "0.2.4"
4
+ VERSION = "0.2.6"
5
5
  end
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
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-23 00:00:00.000000000 Z
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