Class: MemcachedTest::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/memcached_test/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port) ⇒ Client

Returns a new instance of Client.



7
8
9
# File 'lib/memcached_test/client.rb', line 7

def initialize(host, port)
   @socket = TCPSocket.open(host, port)
end

Instance Attribute Details

#socketObject (readonly)

Returns the value of attribute socket.



5
6
7
# File 'lib/memcached_test/client.rb', line 5

def socket
  @socket
end

Instance Method Details

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



91
92
93
94
95
96
97
98
99
100
# File 'lib/memcached_test/client.rb', line 91

def add(key, flags, exptime, bytes, noreply = '', data)
   if noreply == ''
      @socket.puts("add #{key} #{flags} #{exptime} #{bytes}") 
      @socket.puts("#{data}")
   else
      @socket.puts("add #{key} #{flags} #{exptime} #{bytes} #{noreply}")
      @socket.puts("#{data}")
   end
   return @socket.gets() unless noreply == 'noreply'
end

#append(key, bytes, noreply = '', data) ⇒ Object



113
114
115
116
117
118
119
120
121
122
# File 'lib/memcached_test/client.rb', line 113

def append(key, bytes, noreply = '', data)
   if noreply == ''
      @socket.puts("append #{key} #{bytes}")
      @socket.puts("#{data}")
   else
      @socket.puts("append #{key} #{bytes} #{noreply}")
      @socket.puts("#{data}")
   end 
   return @socket.gets() unless noreply == 'noreply'
end

#cas(key, flags, exptime, bytes, cas, noreply = '', data) ⇒ Object



135
136
137
138
139
140
141
142
143
144
# File 'lib/memcached_test/client.rb', line 135

def cas(key, flags, exptime, bytes, cas, noreply = '', data)
   if noreply == ''
      @socket.puts("cas #{key} #{flags} #{exptime} #{bytes} #{cas}")
      @socket.puts("#{data}")
   else
      @socket.puts("cas #{key} #{flags} #{exptime} #{bytes} #{cas} #{noreply}")
      @socket.puts("#{data}")
   end
   return @socket.gets() unless noreply == 'noreply'
end

#get(*keys) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/memcached_test/client.rb', line 44

def get(*keys)
   @socket.puts("get #{keys.join(' ')}")
   items = []

   loop do
      response = @socket.gets()
      items.append response
      case response
         when "NOT_FOUND\r\n"
            break
         when "END\r\n"
            break
      end
   end

   return items
end

#gets(*keys) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/memcached_test/client.rb', line 62

def gets(*keys)
   @socket.puts("gets #{keys.join(' ')}")
   items = []

   loop do
      response = @socket.gets()
      items.append response
      case response
         when "NOT_FOUND\r\n"
            break
         when "END\r\n"
            break
      end
   end

   return items
end

#listen_responseObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/memcached_test/client.rb', line 25

def listen_response
   begin
      Thread.new do
            loop do
               response = @socket.gets.chomp
               puts "> #{response}"

               if response == 'Closing connection'  
                  @socket.close
                  break
               end
            end
         rescue IOError => e
            puts "#{e.class}: #{e.message}"
            @socket.close
      end
   end
end

#prepend(key, bytes, noreply = '', data) ⇒ Object



124
125
126
127
128
129
130
131
132
133
# File 'lib/memcached_test/client.rb', line 124

def prepend(key, bytes, noreply = '', data)
   if noreply == ''
      @socket.puts("prepend #{key} #{bytes}")
      @socket.puts("#{data}")
   else
      @socket.puts("prepend #{key} #{bytes} #{noreply}")
      @socket.puts("#{data}")
   end 
   return @socket.gets() unless noreply == 'noreply'
end

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



102
103
104
105
106
107
108
109
110
111
# File 'lib/memcached_test/client.rb', line 102

def replace(key, flags, exptime, bytes, noreply = '', data)
   if noreply == ''
      @socket.puts("replace #{key} #{flags} #{exptime} #{bytes}")  
      @socket.puts("#{data}")
   else
      @socket.puts("replace #{key} #{flags} #{exptime} #{bytes} #{noreply}")  
      @socket.puts("#{data}")
   end
   return @socket.gets() unless noreply == 'noreply'
end

#send_requestObject



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/memcached_test/client.rb', line 11

def send_request
   puts "Please enter a command:"
   begin
      Thread.new do
            loop do
               @socket.puts $stdin.gets.chomp
            end
         rescue IOError => e
            puts "#{e.class}: #{e.message}"
            @socket.close
      end
   end
end

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



80
81
82
83
84
85
86
87
88
89
# File 'lib/memcached_test/client.rb', line 80

def set(key, flags, exptime, bytes, noreply = '', data)
   if noreply == ''
      @socket.puts("set #{key} #{flags} #{exptime} #{bytes}")
      @socket.puts("#{data}")
   else
      @socket.puts("set #{key} #{flags} #{exptime} #{bytes} #{noreply}")
      @socket.puts("#{data}")
   end
   return @socket.gets() unless noreply == 'noreply'
end