protoplasm-blocking-client 0.1.7 → 0.1.8
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.
@@ -28,14 +28,28 @@ module Protoplasm
|
|
28
28
|
raise "Must be implemented by the client class"
|
29
29
|
end
|
30
30
|
|
31
|
-
def _socket
|
31
|
+
def _socket(timeout = 5)
|
32
32
|
count = 0
|
33
33
|
begin
|
34
34
|
host, port = host_port
|
35
35
|
@socket ||= begin
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
addr = Socket.getaddrinfo(host, nil)
|
37
|
+
sock = Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0)
|
38
|
+
|
39
|
+
if timeout
|
40
|
+
secs = Integer(timeout)
|
41
|
+
usecs = Integer((timeout - secs) * 1_000_000)
|
42
|
+
optval = [secs, usecs].pack("l_2")
|
43
|
+
begin
|
44
|
+
io.setsockopt Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, optval
|
45
|
+
io.setsockopt Socket::SOL_SOCKET, Socket::SO_SNDTIMEO, optval
|
46
|
+
rescue Exception => ex
|
47
|
+
# Solaris, for one, does not like/support socket timeouts.
|
48
|
+
@logger.info "[memcache-client] Unable to use raw socket timeouts: #{ex.class.name}: #{ex.message}" if @logger
|
49
|
+
end
|
50
|
+
end
|
51
|
+
sock.connect(Socket.pack_sockaddr_in(port, addr[0][3]))
|
52
|
+
sock
|
39
53
|
end
|
40
54
|
yield @socket if block_given?
|
41
55
|
rescue Errno::EPIPE, Errno::ECONNRESET
|
@@ -74,7 +88,7 @@ module Protoplasm
|
|
74
88
|
while data.size < len
|
75
89
|
data << socket.sysread([len - data.size, 4096].min)
|
76
90
|
end
|
77
|
-
obj = type.response_class.decode(data)
|
91
|
+
obj = type.response_class.decode(data.force_encoding('BINARY'))
|
78
92
|
yield obj if block_given?
|
79
93
|
end
|
80
94
|
fetch_objects = false unless type.streaming?
|
data/lib/protoplasm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protoplasm-blocking-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: beefcake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70252190527900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.3.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70252190527900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70252190527480 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70252190527480
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70252190526940 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 2.6.1
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70252190526940
|
47
47
|
description: A blocking client for a Protoplasm server.
|
48
48
|
email:
|
49
49
|
- joshbuddy@gmail.com
|
@@ -76,18 +76,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
76
|
- - ! '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '0'
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
hash: 1383266986143059275
|
82
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
80
|
none: false
|
84
81
|
requirements:
|
85
82
|
- - ! '>='
|
86
83
|
- !ruby/object:Gem::Version
|
87
84
|
version: '0'
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
hash: 1383266986143059275
|
91
85
|
requirements: []
|
92
86
|
rubyforge_project: protoplasm-blocking-client
|
93
87
|
rubygems_version: 1.8.15
|
@@ -97,3 +91,4 @@ summary: A blocking client for a Protoplasm server
|
|
97
91
|
test_files:
|
98
92
|
- test/protoplasm_test.rb
|
99
93
|
- test/test_helper.rb
|
94
|
+
has_rdoc:
|