Class: Fastdfs::Client::ClientProxy

Inherits:
Object
  • Object
show all
Includes:
MonitorMixin
Defined in:
lib/fastdfs-client/client_proxy.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port, options = {}) ⇒ ClientProxy

Returns a new instance of ClientProxy.



11
12
13
14
15
16
17
18
# File 'lib/fastdfs-client/client_proxy.rb', line 11

def initialize(host, port, options = {})
  super()
  options ||= {}
  @host = host
  @port = port
  
  @socket = Socket.new(host, port, options[:socket])
end

Instance Attribute Details

#hostObject

Returns the value of attribute host.



9
10
11
# File 'lib/fastdfs-client/client_proxy.rb', line 9

def host
  @host
end

#portObject

Returns the value of attribute port.



9
10
11
# File 'lib/fastdfs-client/client_proxy.rb', line 9

def port
  @port
end

#socketObject

Returns the value of attribute socket.



9
10
11
# File 'lib/fastdfs-client/client_proxy.rb', line 9

def socket
  @socket
end

Instance Method Details

#dispose(cmd, header = [], content = [], &block) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fastdfs-client/client_proxy.rb', line 20

def dispose(cmd, header = [], content = [], &block)
  synchronize do
    @socket.connection do
      contents = Array(content)
      body_len = contents.map{|c| c.bytes.size }.inject(header.length){|sum, x| sum + x }
      full_header = ProtoCommon.header_bytes(cmd, body_len).concat(header)
      @socket.write(cmd, full_header)
      contents.each do |c|
        @socket.write(cmd, c)
      end
      @socket.receive &block
    end
  end
ensure
  @socket.close
end