basicjrpc 0.1.7 → 0.1.16

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 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: