module EventMachine

Public Class Methods

start_tftp_server(server='0.0.0.0', port=69, listener_klass) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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