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