gibson 1.0.4 → 1.0.5
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 +15 -0
- data/lib/gibson/gibson.rb +17 -18
- data/lib/gibson/protocol.rb +7 -7
- data/lib/gibson/version.rb +1 -1
- metadata +7 -9
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NGNhNDQ5NjU2NDZjZTdmNTI3NWFlZWYwZWY1ZDBiZDJkMjJlYTU5NQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZTI3N2FkN2M4NmYwMWYyYmVkNjFhMDk0Y2QzYmM3NDcxMDhlOWRhMA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NDQ2YTdlOWZjZjQwZDFlYWQ5MWFkY2JhMzkxMWQzOWU1NmFmZTBkOWFhMDFj
|
10
|
+
NmE5MDRkNGUzOWU5MjJhMThkNjY2OTg0MzRiYmZlYzA0NTU1NmVjZmE3ZWI2
|
11
|
+
ZWVlNzlhZDE5MjUzODgzMTU3MjljYTlmZDU0NDc5ZTgyNjVkZGM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZmJiNmY3NWRkMWY4ZmE4N2JmY2M4ZmJhYTQyNWFmNjhjYjNlMGUyYzUxOTQ2
|
14
|
+
MjkxNTg1NGQ5NjFmMGZlMDhkN2JjOTA5MGRjMjEzOTM5YWZiZTZmZDk4NWZj
|
15
|
+
N2IyYjZkMzk1MjU1NzkzYzhlYzBhYWRkNjMwODYyODMyODQwZmY=
|
data/lib/gibson/gibson.rb
CHANGED
@@ -14,22 +14,32 @@ end
|
|
14
14
|
|
15
15
|
module Gibson
|
16
16
|
class Client
|
17
|
-
##
|
18
17
|
# Create a new Gibson::Client instance, the options are passed to
|
19
18
|
# Gibson::Connection initialize method.
|
19
|
+
#
|
20
|
+
# ==== Examples:
|
21
|
+
#
|
22
|
+
# Gibson::Client.new # will create a connection to the default /var/run/gibson.sock UNIX socket.
|
23
|
+
# Gibson::Client.new :address => '127.0.0.1' # will connect to localhost:10128
|
24
|
+
#
|
25
|
+
# ==== Options:
|
26
|
+
#
|
27
|
+
# - :socket - The UNIX socket path, if this option is set a UNIX socket connection will be used. Default: /var/run/gibson.sock
|
28
|
+
# - :address - The ip address to connect to, if this option is set a TCP socket connection will be used. Default: nil
|
29
|
+
# - :port - The tcp port to connect to. Default: 10128
|
30
|
+
# - :timeout - The connection and I/O timeout in milliseconds. Default: 100
|
31
|
+
# - :keepalive - If a TCP connection will be used, set this to true to use the SO_KEEPALIVE flag on the socket. Default: false
|
20
32
|
def initialize(opts = {})
|
21
33
|
@connection = nil
|
22
34
|
@options = opts
|
23
35
|
end
|
24
36
|
|
25
|
-
##
|
26
37
|
# Create the connection.
|
27
38
|
def connect
|
28
39
|
@connection = Connection.new( @options )
|
29
40
|
@connection.connect
|
30
41
|
end
|
31
42
|
|
32
|
-
##
|
33
43
|
# Decode a REPL_VAL reply.
|
34
44
|
def decode_val( encoding, size, io )
|
35
45
|
# plain string
|
@@ -44,7 +54,6 @@ module Gibson
|
|
44
54
|
end
|
45
55
|
end
|
46
56
|
|
47
|
-
##
|
48
57
|
# Decode a REPL_KVAL reply.
|
49
58
|
def decode_kval( io, size )
|
50
59
|
count = io.read_unpacked 4, 'L<'
|
@@ -62,7 +71,6 @@ module Gibson
|
|
62
71
|
obj
|
63
72
|
end
|
64
73
|
|
65
|
-
##
|
66
74
|
# Reply decoding wrapper.
|
67
75
|
def decode( code, encoding, size, io )
|
68
76
|
if code == Protocol::REPLIES[:val]
|
@@ -82,7 +90,6 @@ module Gibson
|
|
82
90
|
end
|
83
91
|
end
|
84
92
|
|
85
|
-
##
|
86
93
|
# Send a query to the server given its opcode and arguments payload.
|
87
94
|
# Return the decoded data, or raise one of the RuntimeErrors defined
|
88
95
|
# inside Gibson::Protocol.
|
@@ -100,18 +107,10 @@ module Gibson
|
|
100
107
|
decode code, encoding, size, StringIO.new(data)
|
101
108
|
end
|
102
109
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
# For instance a call to:
|
108
|
-
# client = Gibson::Client.new
|
109
|
-
# client.set 0, 'foo', 'bar'
|
110
|
-
# Will be executed as:
|
111
|
-
# client.query Protocol::COMMANDS[:set], '0 foo bar'
|
112
|
-
def method_missing(name, *arguments)
|
113
|
-
if Protocol::COMMANDS.has_key? name
|
114
|
-
query Protocol::COMMANDS[name], arguments.join(' ')
|
110
|
+
# Map every command => opcode to an instance method.
|
111
|
+
Protocol::COMMANDS.each do |name,opcode|
|
112
|
+
define_method(name) do |*args|
|
113
|
+
query opcode, args.join(' ')
|
115
114
|
end
|
116
115
|
end
|
117
116
|
|
data/lib/gibson/protocol.rb
CHANGED
@@ -50,13 +50,13 @@ module Gibson
|
|
50
50
|
}
|
51
51
|
|
52
52
|
# Error code to exception map.
|
53
|
-
ERRORS =
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
53
|
+
ERRORS = [
|
54
|
+
GenericError,
|
55
|
+
NotFoundError,
|
56
|
+
NaNError,
|
57
|
+
OutOfMemoryError,
|
58
|
+
LockedError
|
59
|
+
]
|
60
60
|
|
61
61
|
# Incoming data encodings.
|
62
62
|
ENCODINGS = {
|
data/lib/gibson/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gibson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Simone Margaritelli
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-18 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: High performance Gibson client for Ruby
|
15
14
|
email: evilsocket@gmail.com
|
@@ -17,11 +16,11 @@ executables: []
|
|
17
16
|
extensions: []
|
18
17
|
extra_rdoc_files: []
|
19
18
|
files:
|
20
|
-
- lib/gibson.rb
|
21
|
-
- lib/gibson/protocol.rb
|
22
19
|
- lib/gibson/connection.rb
|
23
20
|
- lib/gibson/gibson.rb
|
21
|
+
- lib/gibson/protocol.rb
|
24
22
|
- lib/gibson/version.rb
|
23
|
+
- lib/gibson.rb
|
25
24
|
- LICENSE
|
26
25
|
- README.md
|
27
26
|
- Rakefile
|
@@ -30,27 +29,26 @@ files:
|
|
30
29
|
homepage: http://gibson-db.in/
|
31
30
|
licenses:
|
32
31
|
- BSD
|
32
|
+
metadata: {}
|
33
33
|
post_install_message:
|
34
34
|
rdoc_options:
|
35
35
|
- --charset=UTF-8
|
36
36
|
require_paths:
|
37
37
|
- lib
|
38
38
|
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
39
|
requirements:
|
41
40
|
- - ! '>='
|
42
41
|
- !ruby/object:Gem::Version
|
43
42
|
version: '0'
|
44
43
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
44
|
requirements:
|
47
45
|
- - ! '>='
|
48
46
|
- !ruby/object:Gem::Version
|
49
47
|
version: '0'
|
50
48
|
requirements: []
|
51
49
|
rubyforge_project:
|
52
|
-
rubygems_version:
|
50
|
+
rubygems_version: 2.0.6
|
53
51
|
signing_key:
|
54
|
-
specification_version:
|
52
|
+
specification_version: 4
|
55
53
|
summary: High performance Gibson client for Ruby
|
56
54
|
test_files: []
|