barrister-redis 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|