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 71
71:       def initialize(filename)
72:         @file = File.new(filename)
73:         @filename = filename
74:         @bytes_read = 0
75:         @length = nil
76:       end

Public Instance methods

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 119
119:       def can_range?
120:         true
121:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 92
92:       def date
93:         @file.mtime
94:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 78
78:       def filename
79:         File::basename @filename
80:       end

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 115
115:       def length=(l)
116:         @length = l
117:       end

Everything is ‘application/octet-stream‘

[Source]

    # 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

[Source]

     # 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

[Source]

     # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 111
111:       def seek(position)
112:         @file.seek(position)
113:       end

[Source]

    # File lib/xmpp4r/bytestreams/helper/filetransfer.rb, line 88
88:       def size
89:         File.size @filename
90:       end

[Validate]