The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Mogstored::HTTPServer;
use strict;
sub new {
    my ($class, %opts) = @_;
    my $self = bless {}, $class;
    $self->{docroot}  = delete $opts{docroot};
    $self->{listen}   = delete $opts{listen};
    $self->{maxconns} = delete $opts{maxconns};
    $self->{bin}      = delete $opts{bin};
    $self->{include}  = delete $opts{include};
    die "unknown opts" if %opts;
    return $self;
}

sub start {
    my $self = shift;
    die "start not implemented for $self";
}

sub pre_daemonize {
    my $self = shift;
}

sub post_daemonize {
    my $self = shift;
}

sub listen_port {
    my $self = shift;
    my $port = $self->{listen};
    $port =~ s/^.+://;
    die "not numeric port?" unless $port =~ /^\d+$/;
    return $port;
}

sub bind_ip {
    my $self = shift;
    if ($self->{listen} =~ /^(.+):\d+$/) {
        return $1;
    } elsif ($self->{listen} =~ /^\d+$/) {
        return "0.0.0.0";
    } else {
        die "Bogus listen value?";
    }
}

1;