class Fluent::PluginHelper::Server::EventHandler::UDPServer
Attributes
close_after_write_complete[W]
Public Class Methods
new(sock, max_bytes, flags, close_socket, log, under_plugin_development, &callback)
click to toggle source
Calls superclass method
# File lib/fluent/plugin_helper/server.rb, line 502 def initialize(sock, max_bytes, flags, close_socket, log, under_plugin_development, &callback) raise ArgumentError, "socket must be a UDPSocket: sock = #{sock}" unless sock.is_a?(UDPSocket) super(sock) @sock = sock @max_bytes = max_bytes @flags = flags @close_socket = close_socket @log = log @under_plugin_development = under_plugin_development @callback = callback on_readable_impl = case @callback.arity when 1 then :on_readable_without_sock when 2 then :on_readable_with_sock else raise "BUG: callback block must have 1 or 2 arguments" end self.define_singleton_method(:on_readable, method(on_readable_impl)) end
Public Instance Methods
on_readable_with_sock()
click to toggle source
# File lib/fluent/plugin_helper/server.rb, line 537 def on_readable_with_sock begin data, addr = @sock.recvfrom(@max_bytes) rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINTR, Errno::ECONNRESET, IOError, Errno::EBADF return end @callback.call(data, UDPCallbackSocket.new(@sock, addr, close_socket: @close_socket)) rescue => e @log.error "unexpected error in processing UDP data", error: e @log.error_backtrace raise if @under_plugin_development end
on_readable_without_sock()
click to toggle source
# File lib/fluent/plugin_helper/server.rb, line 524 def on_readable_without_sock begin data = @sock.recv(@max_bytes, @flags) rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINTR, Errno::ECONNRESET, IOError, Errno::EBADF return end @callback.call(data) rescue => e @log.error "unexpected error in processing UDP data", error: e @log.error_backtrace raise if @under_plugin_development end