Class Jabber::FileTransfer::FileSource
In: lib/xmpp4r/bytestreams/helper/filetransfer.rb
Parent: Object
Message Presence XMPPStanza Iq XMPPElement X IqQuery Error Singleton IdGenerator Connection Client Component Client Comparable JID RuntimeError ErrorException AuthenticationFailure NoNameXmlnsRegistered SOCKS5Error REXML::Element Stream SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator XMPPElement StreamHost IqSiFileRange IqSiFile StreamHostUsed IqSi IqFeature XRosterItem RosterItem XMUCUserItem XMUCUserInvite IqPubSub Items Subscription IqPubSubOwner Item Event Feature Identity Item XDataField XDataReported XDataTitle XDataInstructions IqVcard SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IqQuery IqQueryBytestreams IqQueryVersion IqQueryRoster IqQueryRPC IqQueryMUCOwner IqQueryDiscoItems IqQueryDiscoInfo IBB IBBTarget IBBInitiator Responder SimpleResponder Iq IqCommand RosterXItem XRoster RosterX X XMUCUser XMUC XDelay XData XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer XParent MUCClient SimpleMUCClient Base DigestMD5 Plain FileSource ServiceHelper NodeHelper CallbackList Callback Semaphore StreamParser SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Responder Helper MUCBrowser Helper NodeBrowser Helper lib/xmpp4r/authenticationfailure.rb lib/xmpp4r/xmppstanza.rb lib/xmpp4r/callbacks.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/connection.rb lib/xmpp4r/iq.rb lib/xmpp4r/jid.rb lib/xmpp4r/errorexception.rb lib/xmpp4r/semaphore.rb lib/xmpp4r/client.rb lib/xmpp4r/stream.rb lib/xmpp4r/x.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/error.rb lib/xmpp4r/component.rb lib/xmpp4r/query.rb lib/xmpp4r/xmppelement.rb lib/xmpp4r/message.rb lib/xmpp4r/presence.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb Bytestreams XParent lib/xmpp4r/version/iq/version.rb lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb Version lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb lib/xmpp4r/roster/x/roster.rb Roster lib/xmpp4r/rpc/helper/server.rb lib/xmpp4r/rpc/helper/client.rb lib/xmpp4r/rpc/iq/rpc.rb RPC lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/helper/mucclient.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/iq/mucowner.rb lib/xmpp4r/muc/helper/simplemucclient.rb MUC lib/xmpp4r/sasl.rb SASL lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/pubsub/stanzas/subscription.rb lib/xmpp4r/pubsub/helper/servicehelper.rb lib/xmpp4r/pubsub/stanzas/item.rb lib/xmpp4r/pubsub/helper/nodehelper.rb lib/xmpp4r/pubsub/iq/pubsub.rb lib/xmpp4r/pubsub/stanzas/event.rb lib/xmpp4r/pubsub/helper/nodebrowser.rb lib/xmpp4r/pubsub/stanzas/items.rb PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard Jabber dot/m_81_0.png

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

Public Instance methods

[Source]

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

[Source]

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

[Source]

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

[Source]

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

Everything is ‘application/octet-stream‘

[Source]

    # 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

[Source]

     # 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

[Source]

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

[Source]

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

[Validate]