track_status temp_version, secret

in lib/google/serverless/exec.rb [782:811]


      def track_status temp_version, secret
        host = "#{temp_version}.#{@service}.#{@project}.appspot.com"
        ::Net::HTTP.start host do |http|
          outpos = errpos = 0
          delay = 0.0
          loop do
            sleep delay
            uri = URI("http://#{host}/#{secret}")
            uri.query = ::URI.encode_www_form outpos: outpos, errpos: errpos
            response = http.request_get uri
            data = ::JSON.parse response.body
            data["outlines"].each { |line| puts "[STDOUT] #{line}" }
            data["errlines"].each { |line| puts "[STDERR] #{line}" }
            outpos = data["outpos"]
            errpos = data["errpos"]
            return data["status"] if data["status"]
            if data["time"] > @timeout_seconds
              http.request_post "/#{secret}/kill", ""
              return "timeout"
            end
            if data["outlines"].empty? && data["errlines"].empty?
              delay += 0.1
              delay = 1.0 if delay > 1.0
            else
              delay = 0.0
            end
          end
        end
      end