Class: Fluent::PluginHelper::Server::EventHandler::UDPServer
- Inherits:
-
Coolio::IO
- Object
- Coolio::IO
- Fluent::PluginHelper::Server::EventHandler::UDPServer
- Defined in:
- lib/fluent/plugin_helper/server.rb
Instance Method Summary collapse
-
#initialize(sock, max_bytes, flags, close_socket, log, under_plugin_development, &callback) ⇒ UDPServer
constructor
A new instance of UDPServer.
- #on_readable_with_sock ⇒ Object
- #on_readable_without_sock ⇒ Object
Constructor Details
#initialize(sock, max_bytes, flags, close_socket, log, under_plugin_development, &callback) ⇒ UDPServer
Returns a new instance of UDPServer.
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 |
# File 'lib/fluent/plugin_helper/server.rb', line 474 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 |
Instance Method Details
#on_readable_with_sock ⇒ Object
509 510 511 512 513 514 515 516 517 518 519 520 |
# File 'lib/fluent/plugin_helper/server.rb', line 509 def on_readable_with_sock begin data, addr = @sock.recvfrom(@max_bytes) rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINTR, Errno::ECONNRESET 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 ⇒ Object
496 497 498 499 500 501 502 503 504 505 506 507 |
# File 'lib/fluent/plugin_helper/server.rb', line 496 def on_readable_without_sock begin data = @sock.recv(@max_bytes, @flags) rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINTR, Errno::ECONNRESET 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 |