public
Description: Wrapper around Ruby's standard HTTP libraries to make them evented (if EventMachine is running)
Homepage: http://github.com/arunthampi/evented_net
Clone URL: git://github.com/arunthampi/evented_net.git
arunthampi (author)
Wed Aug 20 17:20:44 -0700 2008
commit  60900d8ba0412258e1064b0263deab17bd90c8b2
tree    7656098c91c95dc7327f1259ffdf07e9d8b166a1
parent  9232ecc3c32e8aeec052557061c889290350fcd4
README.rdoc

Introduction

This library enables you to make evented HTTP calls if an EventMachine reactor is running.

If not, it falls back to a regular synchronous HTTP call. In both cases, you specify a proc which will be used as a callback with the HTTP code and the HTTP body being passed as parameters.

The aim of this library is to make a consistent API for both synchronous and evented HTTP calls.

Acknowledgement

The awesome blog post by Ilya Grigorik (www.igvita.com/2008/05/27/ruby-eventmachine-the-speed-demon/) really inspired me to dive into EventMachine, and the code samples that he’s posted have been a real Godsend.

Sample Code which uses EventedNet::HTTP POST call

  require 'rubygems'
  require 'evented_net'
  require 'evma_httpserver'
  require 'cgi'

  class Handler  < EventMachine::Connection
    include EventMachine::HttpServer

    def process_evented_http_req(code, body)
      puts "Code: #{code} Body: #{body}"
    end

    def process_http_request
      uri = URI.parse('http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi')
      EventedNet::HTTP.post(uri, :callback => method(:process_evented_http_req), :params => {:Comments => 'Testing Attention Please'})
    end
  end

  EventMachine::run {
    # When running on Mac OS X, use EventMachine.kqueue
    # When running on Linux 2.6.x kernels, use EventMachine.epoll
    EventMachine.kqueue
    EventMachine::start_server("0.0.0.0", 8082, Handler)
    puts "Listening"
  }