FU

 view release on metacpan or  search on metacpan

FU.xs  view on Meta::CPAN

EOT


MODULE = FU   PACKAGE = FU::Util

void to_bool(SV *val)
  PROTOTYPE: $
  CODE:
    SvGETMAGIC(val);
    int r = fu_2bool(aTHX_ val);
    ST(0) = r < 0 ? &PL_sv_undef : r ? &PL_sv_yes : &PL_sv_no;

void json_format(SV *val, ...)
  CODE:
    ST(0) = fujson_fmt_xs(aTHX_ ax, items, val);

void json_parse(SV *val, ...)
  CODE:
    ST(0) = fujson_parse_xs(aTHX_ ax, items, val);

void gzip_lib()
  PROTOTYPE:
  CODE:
    ST(0) = sv_2mortal(newSVpv(fugz_lib(), 0));

void gzip_compress(IV level, SV *in)
  CODE:
    ST(0) = fugz_compress(aTHX_ level, in);

void brotli_compress(IV level, SV *in)
  CODE:
    ST(0) = fubr_compress(aTHX_ level, in);

void fdpass_send(int socket, int fd, SV *data)
  CODE:
    STRLEN buflen;
    const char *buf = SvPVbyte(data, buflen);
    ST(0) = sv_2mortal(newSViv(fufdpass_send(socket, fd, buf, buflen)));

void fdpass_recv(int socket, UV len)
  CODE:
    XSRETURN(fufdpass_recv(aTHX_ ax, socket, len));



MODULE = FU   PACKAGE = FU::fcgi

void new(int fd, int maxproc)
  CODE:
    fufcgi *ctx = safemalloc(sizeof(*ctx));
    ctx->fd = fd;
    ctx->maxproc = maxproc;
    ctx->reqid = ctx->keepconn = ctx->len = ctx->off = 0;
    ST(0) = fu_selfobj(ctx, "FU::fcgi");

void read_req(fufcgi *ctx, SV *headers, SV *params)
  CODE:
    ST(0) = sv_2mortal(newSViv(fufcgi_read_req(aTHX_ ctx, headers, params)));
    ctx->off = ctx->len = 0;

void keepalive(fufcgi *ctx)
  CODE:
    ST(0) = ctx->keepconn ? &PL_sv_yes : &PL_sv_no;

void print(fufcgi *ctx, SV *sv)
  CODE:
    STRLEN len;
    const char *buf = SvPVbyte(sv, len);
    fufcgi_print(aTHX_ ctx, buf, len);

void flush(fufcgi *ctx)
  CODE:
    fufcgi_done(aTHX_ ctx);

void DESTROY(fufcgi *ctx)
  CODE:
    safefree(ctx);



MODULE = FU   PACKAGE = FU::Pg

void _load_libpq()
  CODE:
    if (!PQconnectdb) fupg_load();

void lib_version()
  CODE:
    XSRETURN_IV(PQlibVersion());

void connect(const char *pkg, const char *conninfo)
  CODE:
    (void)pkg;
    ST(0) = fupg_connect(aTHX_ conninfo);



MODULE = FU   PACKAGE = FU::Pg::conn

void server_version(fupg_conn *c)
  CODE:
    XSRETURN_IV(PQserverVersion(c->conn));

void _debug_trace(fupg_conn *c, bool on)
  CODE:
    if (on) PQtrace(c->conn, stderr);
    else PQuntrace(c->conn);
    ST(0) = c->self;

void query_trace(fupg_conn *c, SV *cb)
  CODE:
    if (c->trace) SvREFCNT_dec(c->trace);
    SvGETMAGIC(cb);
    c->trace = SvOK(cb) ? SvREFCNT_inc(cb) : NULL;

void conn(fupg_conn *c)
  CODE:
    ST(0) = sv_newmortal();
    sv_setrv_inc(ST(0), c->self);
    sv_bless(ST(0), gv_stashpv("FU::Pg::conn", 0));



( run in 1.029 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )