diplomat 0.8.4 → 0.9.0

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
  SHA1:
3
- metadata.gz: 4b30733457f28024a240e54b598c45a2ef02d258
4
- data.tar.gz: 50e43ddee795ae3418d2b5e05e71f05e2f803a5e
3
+ metadata.gz: 88a912b85c1348113d9b8e5f941bb652295dbac8
4
+ data.tar.gz: 64c21697ea68210e172293afc90b0bc894a238cc
5
5
  SHA512:
6
- metadata.gz: d4e10a411987256743fc86bf7c95e812ecc2b1f785469bb07f441488426505b0d4c125bbc615c991fd76c6bec916369bca7fa1a07b4c6a8446cff6bcf0054479
7
- data.tar.gz: ad2d634dda086ab217f7c67165ac8cce6afc4928fd95765334b77f94fcf78facdbea3e7f1e0b6ce2d4c6be05a7a1dec277f673e1a2a09447c2a0185f40b0dea8
6
+ metadata.gz: e17459f8b810a4213ffa6a1e87aa4e4a91391f289c954526ed06a4601a754d9e3d230d5666bf9b5775f053627258a45dd163d1cb327f27424588e08c959d1b95
7
+ data.tar.gz: 0b0300f116e79dafb2fd26a2b123962e0ccecfabb7733dfacf034f9ee69b15c728f3da15a07a1974a17591fb0cc5237da60e8ffa176594310d3c252134c57945
@@ -26,7 +26,7 @@ module Diplomat
26
26
  # Get the list of events matching name
27
27
  # @param name [String] the name of the event (regex)
28
28
  # @param not_found [Symbol] behaviour if there are no events matching name;
29
- # :reject with exception, or :wait for a non-empty list
29
+ # :reject with exception, :return degenerate value, or :wait for a non-empty list
30
30
  # @param found [Symbol] behaviour if there are already events matching name;
31
31
  # :reject with exception, :return its current value, or :wait for its next value
32
32
  # @return [Array[hash]] The list of { :name, :payload } hashes
@@ -46,6 +46,9 @@ module Diplomat
46
46
  # - X X - meaningless; never return a value
47
47
  # - X R - "normal" non-blocking get operation. Default
48
48
  # - X W - get the next value only (must have a current value)
49
+ # - R X - meaningless; never return a meaningful value
50
+ # - R R - "safe" non-blocking, non-throwing get-or-default operation
51
+ # - R W - get the next value or a default
49
52
  # - W X - get the first value only (must not have a current value)
50
53
  # - W R - get the first or current value; always return something, but
51
54
  # block only when necessary
@@ -61,6 +64,8 @@ module Diplomat
61
64
  case not_found
62
65
  when :reject
63
66
  raise Diplomat::EventNotFound, name
67
+ when :return
68
+ return []
64
69
  end
65
70
  else
66
71
  case found
@@ -83,7 +88,7 @@ module Diplomat
83
88
  # String are tokens returned by previous calls to this function
84
89
  # Symbols are the special tokens :first, :last, and :next
85
90
  # @param not_found [Symbol] behaviour if there is no matching event;
86
- # :reject with exception, or :wait for event
91
+ # :reject with exception, :return degenerate value, or :wait for event
87
92
  # @param found [Symbol] behaviour if there is a matching event;
88
93
  # :reject with exception, or :return its current value
89
94
  # @return [hash] A hash with keys :value and :token;
@@ -114,12 +119,19 @@ module Diplomat
114
119
  case not_found
115
120
  when :reject
116
121
  raise Diplomat::EventNotFound, name
122
+ when :return
123
+ event_name = ""
124
+ event_payload = ""
125
+ event_token = :last
117
126
  when :wait
118
127
  @raw = wait_for_next_event(url)
119
128
  parse_body
120
129
  # If it's possible for two events to arrive at once,
121
130
  # this needs to #find again:
122
131
  event = @raw.last
132
+ event_name = event["Name"]
133
+ event_payload = Base64.decode64(event["Payload"])
134
+ event_token = event["ID"]
123
135
  end
124
136
  else
125
137
  case found
@@ -127,17 +139,16 @@ module Diplomat
127
139
  raise Diplomat::EventAlreadyExits, name
128
140
  when :return
129
141
  event = body[idx]
142
+ event_name = event["Name"]
143
+ event_payload = Base64.decode64(event["Payload"])
144
+ event_token = event["ID"]
130
145
  end
131
146
  end
132
147
 
133
148
  {
134
- :value => {
135
- :name => event["Name"],
136
- :payload => Base64.decode64(event["Payload"])
137
- },
138
- :token => event["ID"]
149
+ :value => { :name => event_name, :payload => event_payload },
150
+ :token => event_token
139
151
  }
140
-
141
152
  end
142
153
 
143
154
 
data/lib/diplomat/kv.rb CHANGED
@@ -11,7 +11,7 @@ module Diplomat
11
11
  # @param options [Hash] the query params
12
12
  # @option options [String] :consistency The read consistency type
13
13
  # @param not_found [Symbol] behaviour if the key doesn't exist;
14
- # :reject with exception, or :wait for it to appear
14
+ # :reject with exception, :return degenerate value, or :wait for it to appear
15
15
  # @param found [Symbol] behaviour if the key does exist;
16
16
  # :reject with exception, :return its current value, or :wait for its next value
17
17
  # @return [String] The base64-decoded value associated with the key
@@ -24,6 +24,9 @@ module Diplomat
24
24
  # - X X - meaningless; never return a value
25
25
  # - X R - "normal" non-blocking get operation. Default
26
26
  # - X W - get the next value only (must have a current value)
27
+ # - R X - meaningless; never return a meaningful value
28
+ # - R R - "safe" non-blocking, non-throwing get-or-default operation
29
+ # - R W - get the next value or a default
27
30
  # - W X - get the first value only (must not have a current value)
28
31
  # - W R - get the first or current value; always return something, but
29
32
  # block only when necessary
@@ -42,6 +45,8 @@ module Diplomat
42
45
  case not_found
43
46
  when :reject
44
47
  raise Diplomat::KeyNotFound, key
48
+ when :return
49
+ return @value = ""
45
50
  when :wait
46
51
  index = raw.headers["x-consul-index"]
47
52
  end
@@ -1,3 +1,3 @@
1
1
  module Diplomat
2
- VERSION = "0.8.4"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diplomat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hamelink