Number of bytes to receive at a time
# File lib/listen/adapter/tcp.rb, line 79 def self.local_fs? false end
Cleans up buffer and socket
# File lib/listen/adapter/tcp.rb, line 43 def finalize @buffer = nil return unless @socket @socket.close @socket = nil end
Buffers incoming data and handles messages accordingly
# File lib/listen/adapter/tcp.rb, line 62 def handle_data(data) @buffer << data while (message = Listen::TCP::Message.from_buffer(@buffer)) handle_message(message) end rescue _log :error, "TCP.handle_data crashed: #{$!}:#{$@.join("\n")}" raise end
Handles incoming message by notifying of path changes
# File lib/listen/adapter/tcp.rb, line 73 def handle_message(message) type, change, dir, path, _ = message.object _log :debug, "TCP message: #{[type, change, dir, path].inspect}" _queue_change(type.to_sym, Pathname(dir), path, change: change.to_sym) end
Continuously receive and asynchronously handle data
# File lib/listen/adapter/tcp.rb, line 55 def run while (data = @socket.recv(RECEIVE_WINDOW)) async.handle_data(data) end end
Initializes and starts a Celluloid::IO-powered TCP-recipient
# File lib/listen/adapter/tcp.rb, line 22 def start attempts ||= 3 _log :info, "TCP: opening socket #{options.host}:#{options.port}" @socket = TCPSocket.new(options.host, options.port) @buffer = '' async.run rescue Celluloid::Task::TerminatedError _log :debug, "TCP adapter was terminated: #{$!.inspect}" rescue Errno::ECONNREFUSED sleep 1 attempts -= 1 _log :warn, "TCP.start: #{$!.inspect}" retry if attempts > 0 _log :error, "TCP.start: #{$!.inspect}:#{$@.join("\n")}" raise rescue _log :error, "TCP.start: #{$!.inspect}:#{$@.join("\n")}" raise end