Sha256: 55efdf4702af50ee817b90b100931668b8ecea41d19c5f23b46aa39dcdf0b38d

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

# Author::    Nicolas Despres  <nicolas.despres@gmail.com>.
# Copyright:: Copyright (c) 2004, 2005 TTK team. All rights reserved.
# License::   LGPL
# $Id: sender.rb 567 2005-04-13 08:00:06Z polrop $


require 'md5'
require 'dtime'


module TTK

  module Fetchers

    class Server

      class Sender
        include DRb::DRbUndumped

        BLOCK_SIZE = 1024

        def initialize(resource, receiver)
          @resource = resource
          unless @resource.exist?
            raise(Errno::ENOENT, "`#@resource' - no such resource")
          end
          @receiver = receiver
          @md5sum = Digest::MD5.new
          @success = nil
        end

        def send
          if @success.nil?
            @t0 = Time.now
            @resource.open do |f|
              until f.eof?
                str = f.read(BLOCK_SIZE)
                @md5sum << str
                @receiver.recv(str)
              end
              @success = @receiver.stop(@md5sum.to_s)
            end
            @enlapsed_time = DTime.new(Time.now - @t0)
            @success
          end
        end

        def stat
          unless @success.nil?
            {
              :resource => @resource,
              :enlapsed_time => @enlapsed_time,
              :md5sum => @md5sum.to_s,
              :success => @success
            }
          end
        end

      end # class Sender

    end # class Server

  end # module Fetchers

end # module TTK




Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ttk-0.1.576 lib/ttk/fetchers/server/sender.rb
ttk-0.1.580 lib/ttk/fetchers/server/sender.rb
ttk-0.1.579 lib/ttk/fetchers/server/sender.rb