bloom_filter 0.6.0 → 0.6.1
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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bloom_filter.gemspec +8 -7
- data/lib/bloom_filter/client.rb +24 -8
- data/test/bloom_filter_client_test.rb +20 -0
- metadata +3 -3
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.email = "misterfunnyarsal@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/arya/bloom_filter"
|
12
12
|
gem.authors = ["Arya Asemanfar"]
|
13
|
-
gem.add_development_dependency "
|
13
|
+
gem.add_development_dependency "shoulda"
|
14
14
|
gem.add_development_dependency "mocha"
|
15
15
|
gem.add_dependency "eventmachine", ">=0.12.8"
|
16
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.1
|
data/bloom_filter.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{bloom_filter}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Arya Asemanfar"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-26}
|
13
13
|
s.default_executable = %q{bloom_filter_server}
|
14
14
|
s.description = %q{}
|
15
15
|
s.email = %q{misterfunnyarsal@gmail.com}
|
@@ -53,17 +53,18 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.specification_version = 3
|
54
54
|
|
55
55
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
56
|
-
s.add_development_dependency(%q<
|
56
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
57
57
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
58
58
|
s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.8"])
|
59
59
|
else
|
60
|
-
s.add_dependency(%q<
|
60
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
61
61
|
s.add_dependency(%q<mocha>, [">= 0"])
|
62
62
|
s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
|
63
63
|
end
|
64
64
|
else
|
65
|
-
s.add_dependency(%q<
|
65
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
66
66
|
s.add_dependency(%q<mocha>, [">= 0"])
|
67
67
|
s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
|
68
68
|
end
|
69
69
|
end
|
70
|
+
|
data/lib/bloom_filter/client.rb
CHANGED
@@ -2,12 +2,16 @@ require 'socket'
|
|
2
2
|
require 'bloom_filter/protocol'
|
3
3
|
|
4
4
|
class BloomFilter
|
5
|
-
class
|
5
|
+
class Timeout < StandardError; end
|
6
|
+
|
7
|
+
class Client
|
8
|
+
|
6
9
|
PACK_N = "N"
|
7
10
|
def initialize(host, port, options = {})
|
8
11
|
@host, @port = host, port
|
9
12
|
@timeout = options[:timeout]
|
10
|
-
|
13
|
+
@raise_on_timeout = options[:raise_on_timeout] || false
|
14
|
+
self.connect
|
11
15
|
end
|
12
16
|
|
13
17
|
def add(el)
|
@@ -60,15 +64,25 @@ class BloomFilter
|
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
def connect
|
68
|
+
unless self.connected?
|
69
|
+
@socket = begin
|
70
|
+
TCPSocket.new(@host, @port)
|
71
|
+
rescue Exception => e
|
72
|
+
nil
|
73
|
+
end
|
69
74
|
end
|
70
75
|
end
|
71
76
|
|
77
|
+
def reconnect
|
78
|
+
self.disconnect
|
79
|
+
self.connect
|
80
|
+
end
|
81
|
+
|
82
|
+
def disconnect
|
83
|
+
@socket.close if self.connected?
|
84
|
+
end
|
85
|
+
|
72
86
|
def connected?
|
73
87
|
!!(@socket && !@socket.closed?)
|
74
88
|
end
|
@@ -78,6 +92,8 @@ class BloomFilter
|
|
78
92
|
ready = IO.select([@socket], nil, nil, timeout || @timeout)
|
79
93
|
if ready
|
80
94
|
block.call
|
95
|
+
elsif @raise_on_timeout
|
96
|
+
raise BloomFilter::Timeout
|
81
97
|
else
|
82
98
|
default
|
83
99
|
end
|
@@ -57,5 +57,25 @@ class BloomFilterClientTest < Test::Unit::TestCase
|
|
57
57
|
IO.expects(:select).with([@socket], nil, nil, 1)
|
58
58
|
@client.add("hello")
|
59
59
|
end
|
60
|
+
|
61
|
+
should "return false for add if it times out" do
|
62
|
+
@socket.expects(:write).with("#{[6].pack("N")}#{BloomFilter::Protocol::ADD}hello")
|
63
|
+
IO.expects(:select).with([@socket], nil, nil, 1).returns(nil)
|
64
|
+
assert !@client.add("hello")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
should "raise on timeout if set to" do
|
69
|
+
socket = mock()
|
70
|
+
TCPSocket.expects(:new).with("localhost", 4111).returns(socket)
|
71
|
+
IO.stubs(:select).returns(socket)
|
72
|
+
client = BloomFilter::Client.new("localhost", 4111, :timeout => 1, :raise_on_timeout => true)
|
73
|
+
|
74
|
+
|
75
|
+
socket.expects(:write).with("#{[6].pack("N")}#{BloomFilter::Protocol::ADD}hello")
|
76
|
+
IO.expects(:select).with([socket], nil, nil, 1).returns(nil)
|
77
|
+
assert_raises(BloomFilter::Timeout) do
|
78
|
+
client.add("hello")
|
79
|
+
end
|
60
80
|
end
|
61
81
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bloom_filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arya Asemanfar
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-26 00:00:00 -08:00
|
13
13
|
default_executable: bloom_filter_server
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: shoulda
|
17
17
|
type: :development
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|