Simple implementation of TransferSource for sending simple files (supports ranged transfers)
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 70 def initialize(filename) @file = File.new(filename) @filename = filename @bytes_read = 0 @length = nil end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 118 def can_range? true end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 91 def date @file.mtime end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 77 def filename File::basename @filename end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 114 def length=(l) @length = l end
Everything is 'application/octet-stream'
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 83 def mime 'application/octet-stream' end
Because it can_range?, this method implements length checking
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 97 def read(length=512) if @length return nil if @bytes_read >= @length # Already read everything requested if @bytes_read + length > @length # Will we read more than requested? length = @length - @bytes_read # Truncate it! end end buf = @file.read(length) @bytes_read += buf.size if buf buf end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 110 def seek(position) @file.seek(position) end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 87 def size File.size @filename end