barrister-redis 0.0.1 → 0.0.2
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 +4 -4
- data/lib/barrister-redis/version.rb +1 -1
- data/lib/barrister-redis.rb +39 -50
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6feaeedde87a54aa056308f4990a5bc3ee3e0505
|
4
|
+
data.tar.gz: a3bed90a34e91a277343a813213852ca13097953
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31e86af94dce36cca7dbd1488c3156ea6961c9d71c8cda1d4ace3d1b0c54a0ffc50e8fb5bda4fe1daaf27df3c84e47a5a66d18df4d9d733aabf91292c650aa05
|
7
|
+
data.tar.gz: 136c4100f86e29a2296a6826492850fd8c6197579a010ec6baf29195d811342c10f5995e25eb9b0c07dd66658a4eb861b665207d3bdc9ce8ed0cfeb096147117
|
data/lib/barrister-redis.rb
CHANGED
@@ -1,78 +1,67 @@
|
|
1
1
|
require "barrister-redis/version"
|
2
2
|
require 'barrister'
|
3
3
|
require 'redis'
|
4
|
-
require 'pry'
|
5
4
|
|
6
5
|
module Barrister
|
7
6
|
|
8
|
-
|
7
|
+
class RedisTransport
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@client = ::Redis.connect url: database_url
|
15
|
-
end
|
16
|
-
|
17
|
-
def request(message)
|
18
|
-
# reply-to tells the server where we'll be listening
|
19
|
-
request = {
|
20
|
-
'reply_to' => 'reply-' + SecureRandom.uuid,
|
21
|
-
'message' => message
|
22
|
-
}
|
9
|
+
def initialize(database_url, list_name)
|
10
|
+
@list_name = list_name
|
11
|
+
@client = ::Redis.connect url: database_url
|
12
|
+
end
|
23
13
|
|
24
|
-
|
25
|
-
|
14
|
+
def request(message)
|
15
|
+
# reply-to tells the server where we'll be listening
|
16
|
+
request = {
|
17
|
+
'reply_to' => 'reply-' + SecureRandom.uuid,
|
18
|
+
'message' => message
|
19
|
+
}
|
26
20
|
|
27
|
-
|
28
|
-
|
21
|
+
# insert our request at the head of the list
|
22
|
+
@client.lpush(@list_name, JSON.generate(request))
|
29
23
|
|
30
|
-
|
31
|
-
|
24
|
+
# pop last element off our list in a blocking fashion
|
25
|
+
channel, response = @client.brpop(request['reply_to'], timeout=30)
|
32
26
|
|
27
|
+
JSON.parse(response)['message']
|
33
28
|
end
|
34
29
|
|
35
30
|
end
|
36
31
|
|
37
|
-
|
32
|
+
class RedisContainer
|
38
33
|
|
39
|
-
|
34
|
+
def initialize(json_path, database_url, list_name, handlers)
|
35
|
+
@list_name = list_name
|
40
36
|
|
41
|
-
|
42
|
-
|
37
|
+
# establish connection to Redis
|
38
|
+
@client = ::Redis.connect url: database_url
|
43
39
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
# initialize service
|
48
|
-
contract = Barrister::contract_from_file(json_path)
|
49
|
-
@server = Barrister::Server.new(contract)
|
50
|
-
|
51
|
-
# register each provided handler
|
52
|
-
handlers.each do |(interface_name, interface_klass)|
|
53
|
-
@server.add_handler interface_name, interface_klass.new
|
54
|
-
end
|
40
|
+
# initialize service
|
41
|
+
contract = Barrister::contract_from_file(json_path)
|
42
|
+
@server = Barrister::Server.new(contract)
|
55
43
|
|
44
|
+
# register each provided handler
|
45
|
+
handlers.each do |handler_klass|
|
46
|
+
@server.add_handler handler_klass.to_s, handler_klass.new
|
56
47
|
end
|
48
|
+
end
|
57
49
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
parsed = JSON.parse request
|
50
|
+
def start
|
51
|
+
while true
|
52
|
+
# pop last element off our list in a blocking fashion
|
53
|
+
channel, request = @client.brpop(@list_name)
|
64
54
|
|
65
|
-
|
66
|
-
response = {
|
67
|
-
'message' => @server.handle(parsed['message'])
|
68
|
-
}
|
55
|
+
parsed = JSON.parse request
|
69
56
|
|
70
|
-
|
71
|
-
|
72
|
-
|
57
|
+
# reverse the message we were sent
|
58
|
+
response = {
|
59
|
+
'message' => @server.handle(parsed['message'])
|
60
|
+
}
|
73
61
|
|
62
|
+
# 'respond' by inserting our reply at the head of a 'reply'-list
|
63
|
+
@client.lpush(parsed['reply_to'], JSON.generate(response))
|
74
64
|
end
|
75
|
-
|
76
65
|
end
|
77
66
|
|
78
67
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: barrister-redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erin Swenson-Healey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|