Sha256: 4c9db46bc6acf883d9dc21a1db0173d762201dad9a5c5196f2f1a7faa32b3de0

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

require 'json'
require 'eventmachine'
require 'em-http'

#
# DEPRECATED:
# This class was used just for testing purpose.
#

module Khronos
  module Server

    class Runner < EventMachine::Connection
      def post_init
        puts "-- someone connected to the server!"
      end

      def receive_data json
        puts "Receive data to run: #{json}"
        schedule = JSON.parse(json)
        send_data ">>> you sent: #{schedule.inspect}"

        # Close connection with client immediatelly
        close_connection

        if (url = schedule['task_url'])
          http = EventMachine::HttpRequest.new(url).get :redirects => 5
          http.callback do
            puts "#{url}\n#{http.response_header.status} - #{http.response.length} bytes\n"
            puts http.response
          end

          http.errback do
            puts "#{url}\n" + http.error
          end

          enqueue_recurrency!(schedule)
        end

      end

      def enqueue_recurrency!(schedule)
        url = "http://#{Config.instance.scheduler['host']}"
        url += ":#{Config.instance.scheduler['port']}" if Config.instance.scheduler['port']
        url += "/task?id=#{schedule['id']}"
        EventMachine::HttpRequest.new(url).patch :redirects => 2
      end

      def unbind
        puts "-- someone disconnected from the echo server!"
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
khronos-0.0.3.pre4 lib/khronos/server/em_runner.rb
khronos-0.0.3.pre3 lib/khronos/server/em_runner.rb
khronos-0.0.3.pre2 lib/khronos/server/em_runner.rb
khronos-0.0.3.pre1 lib/khronos/server/em_runner.rb