class Fluent::PluginHelper::Server::CallbackSocket
def close
def close @sock.close if @close_socket end
def close_after_write_complete
def close_after_write_complete @sock.close_after_write_complete = true end
def data(&callback)
def data(&callback) on(:data, &callback) end
def initialize(server_type, sock, enabled_events = [], close_socket: true)
def initialize(server_type, sock, enabled_events = [], close_socket: true) @server_type = server_type @sock = sock @peeraddr = nil @enabled_events = enabled_events @close_socket = close_socket end
def on(event, &callback)
def on(event, &callback) raise "BUG: this event is disabled for #{@server_type}: #{event}" unless @enabled_events.include?(event) case event when :data @sock.data(&callback) when :write_complete cb = ->(){ callback.call(self) } @sock.on_write_complete(&cb) when :close cb = ->(){ callback.call(self) } @sock.on_close(&cb) else raise "BUG: unknown event: #{event}" end end
def remote_addr
def remote_addr @peeraddr[3] end
def remote_host
def remote_host @peeraddr[2] end
def remote_port
def remote_port @peeraddr[1] end
def send(data, flags = 0)
def send(data, flags = 0) @sock.send(data, flags) end
def write(data)
def write(data) raise "not implemented here" end