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.



72
73
74
75
76
77
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 72

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

Instance Method Details

#closeObject



79
80
81
82
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 79

def close
  return if @failed_to_connect
  super
end

#on_connectObject



97
98
99
100
101
102
103
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 97

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

#on_connect_failedObject



105
106
107
108
109
110
111
112
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 105

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



84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/droonga/client/connection/droonga-protocol/coolio.rb', line 84

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