memcached-server 1.0.1 → 1.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 +4 -4
- data/bin/memcached-server +1 -3
- data/lib/memcached-server/memcache.rb +1 -2
- data/lib/memcached-server/server.rb +27 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b9e9bb722d09ab81f8ea0e3b1556d9fa96e2e022022ad719ee2921530e25d58
|
4
|
+
data.tar.gz: cd607bdbbadade18327ae7e797856466ca1baccbb1e3f4f86153c6e4b1c03eda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 523e091a87a2f2dfa0036331ebcc5cc4fcce61ac25031398419eae55cf6c19dd651f651dd0735134f2155f97dbabae1057eff6777e9d8adc90f158811f8ba655
|
7
|
+
data.tar.gz: 77bc03d72982b8f4a33e8e7c8eb72148f2e1cf7269d5fc78e03222ee7913eb0f46cb6bc4413f1dca1be5173a7b1e5f4d7e89d8f3df4e627e90ee751f4377a4e1
|
data/bin/memcached-server
CHANGED
@@ -176,8 +176,7 @@ module MemcachedServer
|
|
176
176
|
# @param flags [Integer] Is an arbitrary unsigned integer (written out in decimal)
|
177
177
|
# @param exptime [Integer] The exptime of the Item to store
|
178
178
|
# @param bytes [Integer] The byte size of <data_block>
|
179
|
-
# @param data_block [String] Is a chunk of arbitrary 8-bit data of length <bytes>
|
180
|
-
# @return [String] The reply that describes the result of the operation
|
179
|
+
# @param data_block [String] Is a chunk of arbitrary 8-bit data of length <bytes>
|
181
180
|
def store_item(key, flags, exptime, bytes, data_block)
|
182
181
|
|
183
182
|
item = Item.new(key, flags, exptime, bytes, data_block)
|
@@ -42,14 +42,14 @@ module MemcachedServer
|
|
42
42
|
|
43
43
|
close = false
|
44
44
|
while command = connection.gets()
|
45
|
-
|
45
|
+
|
46
46
|
puts("Command: #{command} | Connection: #{connection.to_s}")
|
47
47
|
|
48
48
|
valid_command = validate_command(command)
|
49
49
|
if valid_command
|
50
50
|
close = run_command(connection, valid_command)
|
51
|
-
else
|
52
|
-
connection.puts(Error::
|
51
|
+
else
|
52
|
+
connection.puts(Error::ERROR)
|
53
53
|
end
|
54
54
|
|
55
55
|
break if close
|
@@ -61,19 +61,18 @@ module MemcachedServer
|
|
61
61
|
puts ("Connection closed to: #{connection}.")
|
62
62
|
|
63
63
|
end
|
64
|
-
|
65
64
|
end
|
65
|
+
|
66
66
|
rescue => exception
|
67
67
|
error = Error::SERVER_ERROR % exception.message
|
68
68
|
connection.puts(error)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
# Runs a valid memcache command
|
73
|
-
#
|
72
|
+
# Runs a valid memcache command.
|
74
73
|
# Depends on MemcachedServer::Memcache method names.
|
75
|
-
# In some cases,
|
76
|
-
#
|
74
|
+
# In some cases, when the #send method is used, the corresponding
|
75
|
+
# MemcachedServer::Memcache method must be equal to valid_command[:name]
|
77
76
|
#
|
78
77
|
# @param connection [TCPSocket] Client's socket
|
79
78
|
# @param valid_command [MatchData] It encapsulates all the results of a valid command pattern match
|
@@ -92,8 +91,8 @@ module MemcachedServer
|
|
92
91
|
noreply = !valid_command[:noreply].nil?
|
93
92
|
data = self.read_bytes(connection, bytes)
|
94
93
|
|
95
|
-
reply = @mc.send(name.to_sym, key, flags, exptime, bytes, data)
|
96
|
-
connection.puts(reply) unless noreply
|
94
|
+
reply = @mc.send(name.to_sym, key, flags, exptime, bytes, data) unless data.nil?()
|
95
|
+
connection.puts(reply) unless noreply || reply.nil?()
|
97
96
|
|
98
97
|
return false
|
99
98
|
|
@@ -103,8 +102,8 @@ module MemcachedServer
|
|
103
102
|
bytes = valid_command[:bytes].to_i
|
104
103
|
data = self.read_bytes(connection, bytes)
|
105
104
|
|
106
|
-
reply = @mc.send(name.to_sym, key, bytes, data)
|
107
|
-
connection.puts(reply) unless noreply
|
105
|
+
reply = @mc.send(name.to_sym, key, bytes, data) unless data.nil?()
|
106
|
+
connection.puts(reply) unless noreply || reply.nil?()
|
108
107
|
|
109
108
|
return false
|
110
109
|
|
@@ -118,8 +117,8 @@ module MemcachedServer
|
|
118
117
|
data = self.read_bytes(connection, bytes)
|
119
118
|
cas_id = valid_command[:cas_id].to_i()
|
120
119
|
|
121
|
-
reply = @mc.cas(key, flags, exptime, bytes, cas_id, data)
|
122
|
-
connection.puts(reply) unless noreply
|
120
|
+
reply = @mc.cas(key, flags, exptime, bytes, cas_id, data) unless data.nil?()
|
121
|
+
connection.puts(reply) unless noreply || reply.nil?()
|
123
122
|
|
124
123
|
return false
|
125
124
|
|
@@ -158,11 +157,17 @@ module MemcachedServer
|
|
158
157
|
#
|
159
158
|
# @param connection [TCPSocket] Client's socket
|
160
159
|
# @param bytes [Integer] The number of bytes to read
|
161
|
-
# @return [String] The message read
|
160
|
+
# @return [String, nil] The message read
|
162
161
|
def read_bytes(connection, bytes)
|
163
162
|
|
164
|
-
|
163
|
+
data_chunk = connection.read(bytes + 1).chomp()
|
165
164
|
|
165
|
+
if data_chunk.bytesize() != bytes
|
166
|
+
connection.puts(Error::CLIENT_ERROR % [" bad data chunk"])
|
167
|
+
return nil
|
168
|
+
end
|
169
|
+
|
170
|
+
return data_chunk
|
166
171
|
end
|
167
172
|
|
168
173
|
# Validates a command.
|
@@ -184,6 +189,12 @@ module MemcachedServer
|
|
184
189
|
return nil
|
185
190
|
end
|
186
191
|
|
192
|
+
# Accepts a connection
|
193
|
+
# @return [TCPSocket] An accepted TCPSocket for the incoming connection.
|
194
|
+
def accept()
|
195
|
+
return @connection.accept()
|
196
|
+
end
|
197
|
+
|
187
198
|
end
|
188
199
|
|
189
200
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memcached-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- José Andrés Puglia Laca
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|