add perl wrapper to scgi

This commit is contained in:
Anthony Minessale
2012-05-23 09:37:54 -05:00
parent a5cd951c53
commit bb3f72cb66
12 changed files with 7025 additions and 30 deletions

103
libs/libscgi/perl/FSSCGI.pm Normal file
View File

@@ -0,0 +1,103 @@
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.35
#
# Don't modify this file, modify the SWIG interface instead.
package FSSCGI;
require Exporter;
require DynaLoader;
@ISA = qw(Exporter DynaLoader);
package FSSCGIc;
bootstrap FSSCGI;
package FSSCGI;
@EXPORT = qw( );
# ---------- BASE METHODS -------------
package FSSCGI;
sub TIEHASH {
my ($classname,$obj) = @_;
return bless $obj, $classname;
}
sub CLEAR { }
sub FIRSTKEY { }
sub NEXTKEY { }
sub FETCH {
my ($self,$field) = @_;
my $member_func = "swig_${field}_get";
$self->$member_func();
}
sub STORE {
my ($self,$field,$newval) = @_;
my $member_func = "swig_${field}_set";
$self->$member_func($newval);
}
sub this {
my $ptr = shift;
return tied(%$ptr);
}
# ------- FUNCTION WRAPPERS --------
package FSSCGI;
############# Class : FSSCGI::SCGIhandle ##############
package FSSCGI::SCGIhandle;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( FSSCGI );
%OWNER = ();
%ITERATORS = ();
sub new {
my $pkg = shift;
my $self = FSSCGIc::new_SCGIhandle(@_);
bless $self, $pkg if defined($self);
}
sub DESTROY {
return unless $_[0]->isa('HASH');
my $self = tied(%{$_[0]});
return unless defined $self;
delete $ITERATORS{$self};
if (exists $OWNER{$self}) {
FSSCGIc::delete_SCGIhandle($self);
delete $OWNER{$self};
}
}
*connected = *FSSCGIc::SCGIhandle_connected;
*socketDescriptor = *FSSCGIc::SCGIhandle_socketDescriptor;
*disconnect = *FSSCGIc::SCGIhandle_disconnect;
*addParam = *FSSCGIc::SCGIhandle_addParam;
*addBody = *FSSCGIc::SCGIhandle_addBody;
*sendRequest = *FSSCGIc::SCGIhandle_sendRequest;
*recv = *FSSCGIc::SCGIhandle_recv;
*bind = *FSSCGIc::SCGIhandle_bind;
*accept = *FSSCGIc::SCGIhandle_accept;
sub DISOWN {
my $self = shift;
my $ptr = tied(%$self);
delete $OWNER{$ptr};
}
sub ACQUIRE {
my $self = shift;
my $ptr = tied(%$self);
$OWNER{$ptr} = 1;
}
# ------- VARIABLE STUBS --------
package FSSCGI;
1;

View File

@@ -0,0 +1,38 @@
PERL=$(shell which perl)
PERL_SITEDIR=$(shell perl -MConfig -e 'print $$Config{sitelibexp}')
PERL_LIBDIR=-L$(shell perl -MConfig -e 'print $$Config{archlib}')/CORE
PERL_LIBS=$(shell perl -MConfig -e 'print $$Config{libs}')
LOCAL_CFLAGS=-w -DMULTIPLICITY $(shell $(PERL) -MExtUtils::Embed -e ccopts) -DEMBED_PERL
LOCAL_LDFLAGS=$(shell $(PERL) -MExtUtils::Embed -e ldopts) $(shell $(PERL) -MConfig -e 'print $$Config{libs}')
GCC_WARNING_JUNK=-w
PERL_INC=$(shell $(PERL) -MExtUtils::Embed -e perl_inc)
all: FSSCGI.so
scgi_wrap.cpp:
swig -module FSSCGI -shadow -perl5 -c++ -DMULTIPLICITY -I../src/include -o scgi_wrap.cpp ../FSSCGI.i
perlxsi.c:
$(PERL) -MExtUtils::Embed -e xsinit -- -o perlxsi.c
perlxsi.o: perlxsi.c
$(CC) $(CC_CFLAGS) $(CFLAGS) $(LOCAL_CFLAGS) -c perlxsi.c -o perlxsi.o
scgi_wrap.o: scgi_wrap.cpp
$(CXX) $(CXX_CFLAGS) $(CXXFLAGS) $(GCC_WARNING_JUNK) $(PERL_INC) -c scgi_wrap.cpp -o scgi_wrap.o
FSSCGI.so: scgi_wrap.o perlxsi.o
$(CXX) $(SOLINK) scgi_wrap.o perlxsi.o $(MYLIB) $(LOCAL_LDFLAGS) -o FSSCGI.so -L. $(LIBS)
clean:
rm -f *.o *.so *~
swigclean:
rm -f scgi_wrap.* FSSCGI.so FSSCGI.pm perlxsi.*
reswig: swigclean scgi_wrap.cpp perlxsi.c
install: FSSCGI.so
install -m 755 FSSCGI.so $(PERL_SITEDIR)
install -m 755 FSSCGI.pm $(PERL_SITEDIR)
install -d -m 755 FSSCGI $(PERL_SITEDIR)/FSSCGI
install -m 755 FSSCGI/* $(PERL_SITEDIR)/FSSCGI

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
#include <EXTERN.h>
#include <perl.h>
EXTERN_C void xs_init (pTHX);
EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
EXTERN_C void
xs_init(pTHX)
{
char *file = __FILE__;
dXSUB_SYS;
/* DynaLoader is a special case */
newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
}

File diff suppressed because it is too large Load Diff