fastbeans 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
- metadata.gz: 252b2d8ff413a374941abccf7f4bb5b58b9eb5f6
4
- data.tar.gz: fc0479fbedc15b5dabec9ee229b71a6b9c5a8d7a
3
+ metadata.gz: fde83e1b94b24bc6b9ef5eca97b61406d8bd317c
4
+ data.tar.gz: b685ad0744874132e32307f1d3bf33a733e61c0c
5
5
  !binary "U0hBNTEy":
6
- metadata.gz: fa821036d465cd456b4cfb2c3b62d47d854564d8ad62bee7600c7cb0d3e69db80b1a92f877fdfa772d5ed16d840436ad9d63f3d73ee63dd203a52fedef18bbb8
7
- data.tar.gz: 1d4e493b16bb193709fc07d0e8b4d259b943a03cc2b57c3f2215e033a451ae26023e97a8cccd5e39834cad444a6c9a675286bb01d8daea78f59173adfe26916b
6
+ metadata.gz: 5e92eedcd609eb008ab486ff06752b833f626335625bd248b5d1c223f9f3f0ca9b7ad3c3f67d135ccf934c53f6224c8419aa06cbd36eb0e15cf69f5dfaa619af
7
+ data.tar.gz: d14fc7575bc30989351f68ac83b4c19c8ec7d8d479f2769e9f588551227c1f478cee9c72b33c6336cbcc542c7891a75b0335e97566d4baa33eb55e97b1857e80
data/fastbeans.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_runtime_dependency "msgpack"
22
+ spec.add_runtime_dependency "rufus-lru"
22
23
  spec.add_development_dependency "bundler", "~> 1.3"
23
24
  spec.add_development_dependency "rake"
24
25
  end
@@ -1,11 +1,16 @@
1
1
  require 'msgpack'
2
2
  require 'thread'
3
+ require 'rufus-lru'
3
4
 
4
5
  module Fastbeans
5
6
 
6
7
  class Client
7
- def initialize(host, port)
8
+ RESULT_CACHE_SIZE=100
9
+
10
+ def initialize(host, port, cache_size=nil)
8
11
  @host, @port = host, port
12
+ @cache_size ||= RESULT_CACHE_SIZE
13
+ @lru_cache = Rufus::Lru::SynchronizedHash.new(@cache_size)
9
14
  connect!(host, port)
10
15
  end
11
16
 
@@ -39,6 +44,10 @@ module Fastbeans
39
44
  end
40
45
  end
41
46
 
47
+ def cached_call(*data)
48
+ @lru_cache[data] ||= call(*data)
49
+ end
50
+
42
51
  def call_without_retries(*data)
43
52
  resp = @mutex.synchronize do
44
53
  MessagePack.pack(data, @sock)
@@ -1,3 +1,3 @@
1
1
  module Fastbeans
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastbeans
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dima Sabanin
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rufus-lru
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement