Class: RubyMemcached::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-memcached/Client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port) ⇒ Client

Returns a new instance of Client.



12
13
14
15
16
# File 'lib/ruby-memcached/Client.rb', line 12

def initialize(host, port)
    @host = host
    @port = port
    @server = TCPSocket.new(host, port)
end

Instance Attribute Details

#hostObject (readonly)

Returns the value of attribute host.



9
10
11
# File 'lib/ruby-memcached/Client.rb', line 9

def host
  @host
end

#portObject (readonly)

Returns the value of attribute port.



10
11
12
# File 'lib/ruby-memcached/Client.rb', line 10

def port
  @port
end

Instance Method Details

#add(key, flags, exptime, bytes, data) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/ruby-memcached/Client.rb', line 86

def add(key, flags, exptime, bytes, data)
    @server.puts(Commands.add % [
        key,
        flags,
        exptime,
        bytes,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]           
end

#append(key, bytes, data) ⇒ Object



112
113
114
115
116
117
118
119
120
121
# File 'lib/ruby-memcached/Client.rb', line 112

def append(key, bytes, data)
    @server.puts(Commands.append % [
        key,
        bytes,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]                       
end

#cas(key, flags, exptime, bytes, cas_id, data) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/ruby-memcached/Client.rb', line 134

def cas(key, flags, exptime, bytes, cas_id, data)
    @server.puts(Commands.cas % [
        key,
        flags,
        exptime,
        bytes,
        cas_id,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]           
end

#delete(key) ⇒ Object



148
149
150
151
# File 'lib/ruby-memcached/Client.rb', line 148

def delete(key)
    @server.puts(Commands.delete % key)
    return Responses.to_h[Responses.key @server.gets()]        
end

#endObject



153
154
155
# File 'lib/ruby-memcached/Client.rb', line 153

def end()
    @server.puts(Commands.end)
end

#get(keys) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ruby-memcached/Client.rb', line 18

def get(keys)
    keys_string = keys.reduce { |ss, s| ss + ' ' + s }
    @server.puts(Commands.get % keys_string)

    items = []

    loop do
        case @server.gets()
            when ResponsesRegex.get
                key = $~['key']
                flags = $~['flags'].to_i()
                bytes = $~['bytes'].to_i()
                data = @server.read(bytes + 1).chomp()

                items << Memcached::Item.new(key, data, flags, 0, bytes, nil)

            when ResponsesRegex.end
                break

            when /.*ERROR.*/
                break
        end
    end

    return items
end

#gets(keys) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/ruby-memcached/Client.rb', line 45

def gets(keys)
    keys_string = keys.reduce { |ss, s| ss + ' ' + s }
    @server.puts(Commands.gets % keys_string)

    items = []

    loop do
        case @server.gets()
            when ResponsesRegex.gets
                key = $~['key']
                flags = $~['flags'].to_i()
                bytes = $~['bytes'].to_i()
                cas_id = $~['cas_id'].to_i()
                data = @server.read(bytes + 1).chomp()

                items << Memcached::Item.new(key, data, flags, 0, bytes, cas_id)

            when ResponsesRegex.end
                break

            when /.*ERROR.*/
                break
        end
    end

    return items
end

#prepend(key, bytes, data) ⇒ Object



123
124
125
126
127
128
129
130
131
132
# File 'lib/ruby-memcached/Client.rb', line 123

def prepend(key, bytes, data)
    @server.puts(Commands._prepend % [
        key,
        bytes,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]                       
end

#reconnectObject



157
158
159
# File 'lib/ruby-memcached/Client.rb', line 157

def reconnect()
    @server = TCPSocket.new(@host, @port)
end

#replace(key, flags, exptime, bytes, data) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/ruby-memcached/Client.rb', line 99

def replace(key, flags, exptime, bytes, data)
    @server.puts(Commands.replace % [
        key,
        flags,
        exptime,
        bytes,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]           
end

#set(key, flags, exptime, bytes, data) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/ruby-memcached/Client.rb', line 73

def set(key, flags, exptime, bytes, data)
    @server.puts(Commands.set % [
        key,
        flags,
        exptime,
        bytes,
        '',
        data
    ])

    return Responses.to_h[Responses.key @server.gets()]           
end