agis 0.2.9 → 0.3.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/agis.rb +42 -4
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20af34669ab28f91465c183b98dfb44695466186
4
- data.tar.gz: 11d27c5d2e30a220e2b76ec352a51b2573bf3712
3
+ metadata.gz: 7ea2ef4e507cea68fd6658697e07057904330567
4
+ data.tar.gz: 6f47831882d708fab0a8806cbb3f27502ddc6f4c
5
5
  SHA512:
6
- metadata.gz: f444b12163fec19bf60e80859b5314243387bae5452d3f3e902010dea34f34123fa201736f66a12080817839ffbda905c7f61ae80d2b9e2f9bf56ee7672613b8
7
- data.tar.gz: 25a757423d3994021a6539c91a962a54f18d24924848ebae32ebe197cce72d99ebaf55f79598c6ef61dadb605701e598c990245e2c545e863773724c7ed8c1cf
6
+ metadata.gz: 61b311da1175aa2483c77837519d6e3c598ea566acc1d70b7dd625e3f06f44138a0297a7aa05a2dbc23841a42c6dca199dde283f9a7991d7fe94f08af5394f2a
7
+ data.tar.gz: 79890cdb4d074f5eca258dfdbf42ebe4fe02423ce9b4b800671ba1f7628dfdd38587f34ceed26342e57bf6106354e82baccefd8514ee4d109ab2286e6810638e
@@ -19,10 +19,8 @@ module Agis
19
19
 
20
20
  class MessageBoxEmpty < StandardError
21
21
  end
22
-
23
- # the name of the key used for the Agis message box in Redis
24
- # the lock is this string followed by ".LOCK"
25
- def agis_mailbox
22
+
23
+ def agis_id_prelim
26
24
  begin
27
25
  mid = self.agis_id
28
26
  rescue NoMethodError
@@ -31,6 +29,13 @@ module Agis
31
29
  mid ||= self.id
32
30
  rescue NoMethodError
33
31
  end
32
+ return mid
33
+ end
34
+
35
+ # the name of the key used for the Agis message box in Redis
36
+ # the lock is this string followed by ".LOCK"
37
+ def agis_mailbox
38
+ mid = agis_id_prelim
34
39
  raise NoAgisIDAvailable unless mid
35
40
  a = "AGIS TERMINAL : " + self.class.to_s + " : " + mid.to_s
36
41
  end
@@ -236,6 +241,36 @@ module Agis
236
241
  end
237
242
  end
238
243
 
244
+ # Find all mailboxes total
245
+ def _agis_find_global_mailboxes(redis)
246
+ redis.smembers("AGIS_MAILBOX_GLOBAL_LIST")
247
+ end
248
+
249
+ # Find all mailboxes for this class
250
+ def agis_find_all_mailboxes(redis)
251
+ redis.smembers("AGIS_MAILBOX_CLASS:" + self.class.to_s)
252
+ end
253
+
254
+ # Crunch all agis calls on a single model
255
+ # found using the #find method with the
256
+ # agis_id or id. Must be numeric
257
+ def agis_crunch_all_records(redis)
258
+ all = agis_find_all_mailboxes(redis)
259
+ all.each do |id|
260
+ self.class.find(id).agis_call(redis)
261
+ end
262
+ end
263
+
264
+ # Crunch all agis calls on a single model
265
+ # found using the #new method with id set
266
+ # to agis_id or id
267
+ def agis_crunch_all_records_new(redis)
268
+ all = agis_find_all_mailboxes(redis)
269
+ all.each do |id|
270
+ self.class.new(id).agis_call(redis)
271
+ end
272
+ end
273
+
239
274
  # Get method in the format
240
275
  # [arity, method body]
241
276
  def agis_method(name)
@@ -249,6 +284,9 @@ module Agis
249
284
  until_sig = Time.now.to_s + ":" + Process.pid.to_s + Random.new.rand(4000000000).to_s + Random.new.rand(4000000000).to_s
250
285
  loop do
251
286
  begin
287
+ redis.sadd("AGIS_MAILBOX_CLASSES", self.class.to_s)
288
+ redis.sadd("AGIS_MAILBOX_CLASS:" + self.class.to_s, self.agis_id_prelim)
289
+ redis.sadd("AGIS_MAILBOX_GLOBAL_LIST", self.agis_mailbox)
252
290
  redis.multi do
253
291
  redis.rpush self.agis_mailbox, "m:" + name.to_s
254
292
  redis.rpush self.agis_mailbox, agis_aconv(arg1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Oja
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-25 00:00:00.000000000 Z
11
+ date: 2015-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  version: '0'
66
66
  requirements: []
67
67
  rubyforge_project:
68
- rubygems_version: 2.4.6
68
+ rubygems_version: 2.4.8
69
69
  signing_key:
70
70
  specification_version: 4
71
71
  summary: Messagebox Redis Actors for Ruby