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