| 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