Class Jabber::FileTransfer::FileSource
In: lib/xmpp4r/bytestreams/helper/filetransfer.rb
Parent: Object

Simple implementation of TransferSource for sending simple files (supports ranged transfers)

Methods

can_range?   date   filename   length=   mime   new   read   seek   size  

Included Modules

TransferSource

Public Class methods

[Source]

    # 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

Public Instance methods

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 115
115:       def can_range?
116:         true
117:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 88
88:       def date
89:         @file.mtime
90:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 74
74:       def filename
75:         File::basename @filename
76:       end

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 111
111:       def length=(l)
112:         @length = l
113:       end

Everything is ‘application/octet-stream‘

[Source]

    # 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

[Source]

     # 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

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 107
107:       def seek(position)
108:         @file.seek(position)
109:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 84
84:       def size
85:         File.size @filename
86:       end

[Validate]