tiny_bus 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tiny_bus.rb +16 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b04a4860504e84547cc02b406c9146d47af4e16563b7509fe2cf3152fe5b6747
4
- data.tar.gz: 687328b251069cf527b3de27210ce626884e9e751ccc07ef7accba31a86cd2c6
3
+ metadata.gz: 27b59f1cbc599aa563486a8fb29274e2369b1099dc01523f96b14bc9f3f0d06f
4
+ data.tar.gz: e8f3511275ca57d791808e343e9f70e4855cbaea72a1eb119935b09b4acbbb4e
5
5
  SHA512:
6
- metadata.gz: 42eda75efbcdbcdd006c1dcdfeb098b48b17e6aecf5f7b27b9a630d8f383ad9a01064e77f77a486e01916ca98d71e036c726e2e5568a227dd4b36d2dc8f0f52c
7
- data.tar.gz: 7c9cef3cf505db81c954aa8666007d30a89a2b0384e5e385759e8034ee39eb63a9f7f4d3da3981f37b63c657abece8c70d0b5b48152e1b82df7e5269f2da6909
6
+ metadata.gz: adfd193f7b1c3f55c66f86d5a096d21b0d1d8e5fb04c2c978cf9885cdb8663ca3d2850dfda25c4debb4b93e5407dd601428f76a184a72f7a1210b0abf7a2ce03
7
+ data.tar.gz: 34c31596855df2ac266fd839de02b84c1827cc64ec4ecf2d295cf98748364604be1285c9b0efb9278392fadadd23553d5d342cb76f9b67a037c12c51443361c0
data/lib/tiny_bus.rb CHANGED
@@ -6,7 +6,7 @@ require 'tiny_pipe'
6
6
 
7
7
  # NOTE: This library depends on the TinyLog library.
8
8
  #
9
- # This class implements a very simpler PubSub system where:
9
+ # This class implements a very simple PubSub system where:
10
10
  # - subscribers can subscribe via the #sub method
11
11
  # - subscribers can unsubscribe via the #unsub method
12
12
  # - msgs can enter the TinyBus via the #msg method
@@ -56,10 +56,17 @@ class TinyBus
56
56
  annotation_prefix: ANNOTATION_PREFIX_DEFAULT)
57
57
  @subs = {}
58
58
  @translator = translator
59
+
60
+ @dead_key = "#{annotation_prefix}dead"
61
+ @topic_key = "#{annotation_prefix}topic"
62
+ @time_key = "#{annotation_prefix}time"
63
+ @msg_uuid_key = "#{annotation_prefix}msg_uuid"
64
+ @trace_key = "#{annotation_prefix}trace"
65
+
59
66
  @annotator = TinyPipe.new([
60
- ->(m){ m[annotation_prefix + 'time'] = (Time.now.to_f * 1000).to_i; m },
61
- ->(m){ m[annotation_prefix + 'msg_uuid'] = SecureRandom.uuid; m },
62
- ->(m){ m[annotation_prefix + 'trace'] ||= SecureRandom.uuid; m }
67
+ ->(m){ m[@time_key] = (Time.now.to_f * 1000).to_i; m },
68
+ ->(m){ m[@msg_uuid_key] = SecureRandom.uuid; m },
69
+ ->(m){ m[@trace_key] ||= SecureRandom.uuid; m }
63
70
  ])
64
71
 
65
72
  @stats = { '.dead' => 0 }
@@ -76,14 +83,14 @@ class TinyBus
76
83
  @subs[topic] << subber
77
84
  @stats[topic] ||= 0
78
85
 
79
- msg({ '.topic' => 'sub', 'to_topic' => topic, 'subber' => subber.to.s })
86
+ msg({ @topic_key => 'sub', 'to_topic' => topic, 'subber' => subber.to_s })
80
87
  end
81
88
 
82
89
  # removes a subscriber from a topic
83
90
  def unsub(topic, subber)
84
91
  @subs[topic]&.delete(subber)
85
92
 
86
- msg({ '.topic' => 'unsub', 'from_topic' => topic, 'subber' => subber.to.s })
93
+ msg({ @topic_key => 'unsub', 'from_topic' => topic, 'subber' => subber.to_s })
87
94
  end
88
95
 
89
96
  # takes an incoming message and distributes it to subscribers
@@ -101,11 +108,11 @@ class TinyBus
101
108
  msg = @annotator.pipe(msg)
102
109
  msg = @translator&.pipe(msg) || msg
103
110
 
104
- topic = msg['topic']
111
+ topic = msg[@topic_key]
105
112
 
106
113
  subbers = @subs[topic]
107
114
 
108
- if subbers
115
+ if (subbers&.length || 0) > 0
109
116
  @stats[topic] += 1
110
117
  subbers.each{|s| s.msg(msg) }
111
118
  @log.sent msg
@@ -113,7 +120,7 @@ class TinyBus
113
120
  if @raise_on_dead
114
121
  raise TinyBus::DeadMsgError.new("Could not deliver message to topic `#{topic}'")
115
122
  else
116
- @stats['.dead'] += 1
123
+ @stats[@dead_key] += 1
117
124
  @dead.dead msg
118
125
  end
119
126
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_bus
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Lunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-03 00:00:00.000000000 Z
11
+ date: 2022-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tiny_log