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