peplum 0.2.4 → 0.2.6

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
  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