# File lib/nanite/streaming.rb, line 40
    def broadcast_data(filename, io, options = {})
      domain   = options[:domain] || 'global'
      filename = File.basename(filename)
      dest     = options[:destination] || filename
      sent = 0

        begin
          file_push = Nanite::FileStart.new(filename, dest, Identity.generate)
          amq.topic('file broadcast').publish(serializer.dump(file_push), :key => "nanite.filepeer.#{domain}")
          res = Nanite::FileChunk.new(file_push.token)
          while chunk = io.read(16384)
            res.chunk = chunk
            amq.topic('file broadcast').publish(serializer.dump(res), :key => "nanite.filepeer.#{domain}")
            sent += chunk.length
          end
          fend = Nanite::FileEnd.new(file_push.token, options[:meta])
          amq.topic('file broadcast').publish(serializer.dump(fend), :key => "nanite.filepeer.#{domain}")
          ""
        ensure
          io.close
        end

        sent
    end