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 70 70: def initialize(filename) 71: @file = File.new(filename) 72: @filename = filename 73: @bytes_read = 0 74: @length = nil 75: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 118 118: def can_range? 119: true 120: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 77 77: def filename 78: File::basename @filename 79: end
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 114 114: def length=(l) 115: @length = l 116: end
Everything is ‘application/octet-stream‘
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 83 83: def mime 84: 'application/octet-stream' 85: end
Because it can_range?, this method implements length checking
# File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 97 97: def read(length=512) 98: if @length 99: return nil if @bytes_read >= @length # Already read everything requested 100: if @bytes_read + length > @length # Will we read more than requested? 101: length = @length - @bytes_read # Truncate it! 102: end 103: end 104: 105: buf = @file.read(length) 106: @bytes_read += buf.size if buf 107: buf 108: end