Class: Upload
- Defined in:
- lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.rb
Instance Attribute Summary
Attributes inherited from Transfer
#bytes, #filename, #filesize, #peer
Instance Method Summary collapse
-
#initialize(filetransfer, iq, filename, filesize, can_range, msgblock) ⇒ Upload
constructor
A new instance of Upload.
Methods inherited from Transfer
#done?, #say, #stats, #stats_loop, #transfer
Constructor Details
#initialize(filetransfer, iq, filename, filesize, can_range, msgblock) ⇒ Upload
Returns a new instance of Upload.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.rb', line 87 def initialize(filetransfer, iq, filename, filesize, can_range, msgblock) super(filetransfer, iq.from, filename, filesize, msgblock) if filename.size < 1 say "What is this file for?" @done = true return end offset = nil if File::exist?(filename) if File::size(filename) < filesize and can_range @bytes = offset = File::size(filename) say "Will retrieve #{filename} starting at #{offset}" else say "#{filename} already exists" filetransfer.decline(iq) @done = true return end end Thread.new { begin stream = filetransfer.accept(iq, offset) if stream.kind_of?(Jabber::Bytestreams::SOCKS5Bytestreams) stream.connect_timeout = 5 stream.add_streamhost_callback(nil, nil, &@streamhost_cb) end if stream.accept outfile = File.new(filename, (offset ? 'a' : 'w')) transfer(stream, outfile) outfile.close stream.close @done = true else say "Stream failed" @done = true end rescue puts $!.backtrace.first say "Error: #{$!}" @done = true end } end |