Class | Jabber::FileTransfer::FileSource |
In: |
lib/xmpp4r/bytestreams/helper/filetransfer.rb
|
Parent: | Object |
Simple implementation of TransferSource for sending simple files (supports ranged transfers)
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 67 67: def initialize(filename) 68: @file = File.new(filename) 69: @filename = filename 70: @bytes_read = 0 71: @length = nil 72: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 115 115: def can_range? 116: true 117: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 74 74: def filename 75: File::basename @filename 76: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 111 111: def length=(l) 112: @length = l 113: end
Everything is ‘application/octet-stream‘
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 80 80: def mime 81: 'application/octet-stream' 82: end
Because it can_range?, this method implements length checking
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 94 94: def read(length=512) 95: if @length 96: return nil if @bytes_read >= @length # Already read everything requested 97: if @bytes_read + length > @length # Will we read more than requested? 98: length = @length - @bytes_read # Truncate it! 99: end 100: end 101: 102: buf = @file.read(length) 103: @bytes_read += buf.size if buf 104: buf 105: end