basicjrpc 0.1.7 → 0.1.16

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: 5e9b795e2a1c4f5fd854cb8f6629b4e9dafb40a9
4
- data.tar.gz: 7af25a65552692de08979265630317effc00e045
3
+ metadata.gz: 7301312a7ef206d91737a9279d769c30a7940457
4
+ data.tar.gz: 043243f849b8b423fc81888f097a1b572ec4f9af
5
5
  SHA512:
6
- metadata.gz: 33848618336a115021b955aeaf6348c471cb1d59a7376eeac27de988a1a7d6cd536e25c451f6c2104f9759f4aeca750737fda3c5c44ceae637f2e097608354a2
7
- data.tar.gz: 19cf0cac5c426767383775ce01cc67779589b4172bb0cf6b8658e8922a84f32c8a74736b600029f5655a903bc05fe3f057f4d3e1ee63136a76fe1a8f685c8e77
6
+ metadata.gz: c2fbd9c5537edc364d2329b1959a04aae0f6d4190db77b40bf01f31844ab796c5e91f6accdcdf1d4351caffe828eef4d7eda12171844adc8f7399ce0448dae4b
7
+ data.tar.gz: c1374666e600975f29f09eba7c33b469e05b5cd30e358addff944eaa9f96b890645dc082f0cc8204899429fbacfc97f37a07f223f8bdc1275bcf81238ada44e9
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- basicjrpc (0.1.5)
4
+ basicjrpc (0.1.20)
5
5
  oj
6
6
  redis
7
+ require_all
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -11,6 +12,7 @@ GEM
11
12
  oj (2.15.0)
12
13
  rake (10.5.0)
13
14
  redis (3.3.0)
15
+ require_all (1.3.3)
14
16
 
15
17
  PLATFORMS
16
18
  ruby
data/basicjrpc.gemspec CHANGED
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_runtime_dependency 'redis'
25
25
  spec.add_runtime_dependency 'oj'
26
+ spec.add_runtime_dependency 'require_all'
26
27
  end
@@ -0,0 +1,17 @@
1
+ module BasicJRPC
2
+ class Client
3
+
4
+ class Payload
5
+ attr_reader :message_id, :method_name, :args
6
+ attr_accessor :response_requested
7
+
8
+ def initialize(method_name, args)
9
+ @message_id = SecureRandom.uuid
10
+ @method_name = method_name
11
+ @args = args
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,33 @@
1
+ module BasicJRPC
2
+
3
+ # Responding Client
4
+ class Client
5
+ def initialize(queue)
6
+ @redis = Redis.new(host: "redis")
7
+ @queue = queue
8
+ @payload = nil
9
+ end
10
+
11
+ def method_missing(m, *args, &block)
12
+ send_request(Payload.new(m, args))
13
+ end
14
+
15
+ def send_request payload
16
+ payload.response_requested = true
17
+ @redis.rpush(@queue, Oj.dump(payload))
18
+
19
+ Timeout::timeout(5) {
20
+ return Oj.load(@redis.blpop(payload.message_id)[1])
21
+ }
22
+ end
23
+ end
24
+
25
+ # Fire And Forget Client
26
+ class FAFClient < Client
27
+ def send_request payload
28
+ payload.response_requested = false
29
+ @redis.rpush(@queue, Oj.dump(payload))
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,26 @@
1
+ module BasicJRPC
2
+ class Server
3
+
4
+ def initialize queue, injected_class
5
+ @injected_class = injected_class
6
+ @queue = queue
7
+ @redis = Redis.new(host: "redis")
8
+ end
9
+
10
+ def listen
11
+ puts "Listening..."
12
+ while true
13
+ payload = @redis.blpop(@queue)[1]
14
+ payload = Oj.load(payload)
15
+ puts "Processing message #{payload.method_name} #{payload.args}" if BasicJRPC::Config.debug
16
+
17
+ # Should always return a data object
18
+ response = @injected_class.send(payload.method_name, *payload.args)
19
+
20
+ # Bounce the response back if response is requested
21
+ @redis.rpush(payload.message_id, Oj.dump(response)) if payload.response_requested
22
+ end
23
+ end
24
+
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module BasicJRPC
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.16"
3
3
  end
data/lib/basicjrpc.rb CHANGED
@@ -1,8 +1,11 @@
1
- require "basicjrpc/version"
1
+ require 'require_all'
2
2
  require 'redis'
3
3
  require 'oj'
4
4
  require 'securerandom'
5
5
 
6
+ gem_root = Gem::Specification.find_by_name("basicjrpc").gem_dir
7
+ require_all "#{gem_root}/lib/basicjrpc/**/*.rb"
8
+
6
9
  module BasicJRPC
7
10
  class Config
8
11
  def self.set_debug val
@@ -13,59 +16,4 @@ module BasicJRPC
13
16
  @@debug || false
14
17
  end
15
18
  end
16
-
17
- class Client
18
-
19
- class Payload
20
- attr_reader :message_id, :method_name, :args
21
-
22
- def initialize(method_name, args)
23
- @message_id = SecureRandom.uuid
24
- @method_name = method_name
25
- @args = args
26
- end
27
- end
28
-
29
- def initialize(queue)
30
- @redis = Redis.new(host: "redis")
31
- @queue = queue
32
- @payload = nil
33
- end
34
-
35
- def method_missing(m, *args, &block)
36
- send_request(Payload.new(m, args))
37
- end
38
-
39
- def send_request payload
40
- @redis.rpush(@queue, Oj.dump(payload))
41
-
42
- Timeout::timeout(5) {
43
- return Oj.load(@redis.blpop(payload.message_id)[1])
44
- }
45
- end
46
- end
47
-
48
- class Server
49
-
50
- def initialize queue, injected_class
51
- @injected_class = injected_class
52
- @queue = queue
53
- @redis = Redis.new(host: "redis")
54
- end
55
-
56
- def listen
57
- puts "Listening..."
58
- while true
59
- payload = @redis.blpop(@queue)[1]
60
- payload = Oj.load(payload)
61
- puts "Processing message #{payload.method_name} #{payload.args}" if BasicJRPC::Config.debug
62
-
63
- # Should always return a data object
64
- response = @injected_class.send(payload.method_name, *payload.args)
65
-
66
- # Bounce the response back
67
- @redis.rpush(payload.message_id, Oj.dump(response))
68
- end
69
- end
70
- end
71
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basicjrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Simpson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-24 00:00:00.000000000 Z
11
+ date: 2016-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: require_all
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Basic JRPC Handler
70
84
  email:
71
85
  - martin.c.simpson@gmail.com
@@ -82,6 +96,9 @@ files:
82
96
  - bin/console
83
97
  - bin/setup
84
98
  - lib/basicjrpc.rb
99
+ - lib/basicjrpc/client.rb
100
+ - lib/basicjrpc/client/payload.rb
101
+ - lib/basicjrpc/server.rb
85
102
  - lib/basicjrpc/version.rb
86
103
  homepage: http://www.martin-simpson.net
87
104
  licenses: