Module: EventMachine
- Defined in:
- lib/em-tftp.rb
Class Method Summary collapse
- .start_tftp_server(server = '0.0.0.0', port = 69, listener_klass) ⇒ Object
- .tftp_get(server, port = 69, filename, &callback) ⇒ Object
- .tftp_put(server, port = 69, filename, file_data, &callback) ⇒ Object
Class Method Details
.start_tftp_server(server = '0.0.0.0', port = 69, listener_klass) ⇒ Object
435 436 437 438 439 440 441 442 443 444 445 |
# File 'lib/em-tftp.rb', line 435 def start_tftp_server(server='0.0.0.0', port=69, listener_klass) if !listener_klass.is_a?(Class) if listener_klass.is_a?(Module) listener_klass = Class.new.tap { include listener_klass } else raise ArgumentError, "Expected a class which defines callback methods like #received_block, #completed, and #failed; got #{listener_klass.class} instead" end end EM.open_datagram_socket(server, port, TFTP::ListeningConnection(listener_klass)) end |
.tftp_get(server, port = 69, filename, &callback) ⇒ Object
447 448 449 450 |
# File 'lib/em-tftp.rb', line 447 def tftp_get(server, port=69, filename, &callback) conn = EM.open_datagram_socket('0.0.0.0', 0, TFTP::TransferConnection) conn.transfer = TFTP::ClientReceive.new(conn, server, TFTP::ClientDownloader.new(&callback), filename) end |
.tftp_put(server, port = 69, filename, file_data, &callback) ⇒ Object
452 453 454 455 456 457 458 459 |
# File 'lib/em-tftp.rb', line 452 def tftp_put(server, port=69, filename, file_data, &callback) conn = EM.open_datagram_socket('0.0.0.0', 0, TFTP::TransferConnection) if file_data.is_a?(IO) EventMachine.defer(proc { file_data.read }, proc { |data| conn.transfer = TFTP::ClientSend.new(conn, server, port, TFTP::ClientUploader.new(&callback), filename, data) }) else conn.transfer = TFTP::ClientSend.new(conn, server, TFTP::ClientUploader.new(&callback), filename, file_data) end end |