Class: Droonga::Client::Connection::DroongaProtocol::Coolio::Sender

Inherits:
Coolio::TCPSocket
  • Object
show all
Defined in:
lib/droonga/client/connection/droonga-protocol/coolio.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Sender

Returns a new instance of Sender.



50
51
52
53
54
55
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 50

def initialize(*args)
  super
  @connected = false
  @failed_to_connect = false
  @buffer = []
end

Instance Method Details

#closeObject



57
58
59
60
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 57

def close
  return if @failed_to_connect
  super
end

#on_connectObject



75
76
77
78
79
80
81
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 75

def on_connect
  @connected = true
  @buffer.each do |packed_message,|
    write(packed_message)
  end
  @buffer.clear
end

#on_connect_failedObject



83
84
85
86
87
88
89
90
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 83

def on_connect_failed
  @failed_to_connect = true
  @buffer.each do |packed_message, on_error|
    _, _, message = MessagePack.unpack(packed_message)
    on_error.call(message)
  end
  @buffer.clear
end

#send(tag, data, &on_error) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 62

def send(tag, data, &on_error)
  if @failed_to_connect
    on_error.call(data)
  end
  fluent_message = [tag, Time.now.to_i, data]
  packed_fluent_message = MessagePackPacker.pack(fluent_message)
  if @connected
    write(packed_fluent_message)
  else
    @buffer << [packed_fluent_message, on_error]
  end
end