Gungho::Engine - Base Class For Gungho Engine


Gungho documentation Contained in the Gungho distribution.

Index


Code Index:

NAME

Top

Gungho::Engine - Base Class For Gungho Engine

SYNOPSIS

Top

  package Gungho::Engine::SomeEngine;
  use strict;
  use base qw(Gungho::Engine);

  sub run
  {
     ....
  }

METHODS

Top

handle_dns_response()

Handles the response from DNS lookups.

handle_response

Call finish_request() on the request, and delegates to Gungho's hnalde_response()

finish_request

Perform whatever cleanup required on the request

run()

Starts the engine. The exact behavior differs between each engines

stop()

Stops the engine. The exact behavior differs between each engines


Gungho documentation Contained in the Gungho distribution.

# $Id: /mirror/gungho/lib/Gungho/Engine.pm 31637 2007-12-01T14:04:35.046822Z lestrrat  $
#
# Copyright (c) 2007 Daisuke Maki <daisuke@endeworks.jp>
# All rights reserved.

package Gungho::Engine;
use strict;
use warnings;
use base qw(Gungho::Base);

__PACKAGE__->mk_virtual_methods($_) for qw(run stop);

sub finish_request
{
    my ($self, $c, $request) = @_;
    if (my $host = $request->notes('original_host')) {
        # Put it back
        $request->uri->host($host);
    }
}

sub handle_response
{
    my ($self, $c, $request, $response) = @_;
    $self->finish_request($c, $request);
    $c->handle_response($request, $response);
}

sub handle_dns_response
{
    my ($self, $c, $request, $dns_response) = @_;

    if (! $dns_response) {
        return;
    }

    foreach my $answer ($dns_response->answer) {
        next unless $answer->type eq 'A';
        return if $c->handle_dns_response($request, $answer, $dns_response);
    }

    $c->handle_response($request, $c->_http_error(500, "Failed to resolve host " . $request->uri->host, $request)),
}

1;

__END__