Algorithm-ConsistentHash-Ketama

 view release on metacpan or  search on metacpan

xs/Ketama.xs  view on Meta::CPAN

        {
            s = p->buckets[i];
            ENTER;
            SAVETMPS;
            PUSHMARK(SP);
            mXPUSHp( "Algorithm::ConsistentHash::Ketama::Bucket", 41 );
            mXPUSHp( "label", 5 );
            mXPUSHp( s.label, strlen(s.label) );
            mXPUSHp( "weight", 6 );
            mXPUSHi( s.weight );
            PUTBACK;

            call_method("new", G_SCALAR);

            SPAGAIN;
    
            sv = POPs;
            SvREFCNT_inc(sv);

            PUTBACK;
            FREETMPS;
            LEAVE;
        }
        XPUSHs( sv );
    }
    return p->numbuckets;
}

static int
PerlKetama_continuum_compare( PerlKetama_Continuum_Point *a, PerlKetama_Continuum_Point *b )

xs/typemap  view on Meta::CPAN

TYPEMAP

PerlKetama*    T_PERLKETAMA

INPUT
T_PERLKETAMA
    {
        MAGIC *mg;

        mg = PerlKetama_mg_find(aTHX_ SvRV($arg), &PerlKetama_vtbl);
        if (mg) {
            $var = (PerlKetama *) mg->mg_ptr;
        } else {
            croak(\"not a ketama object\");
        }
    }

OUTPUT
T_PERLKETAMA
        if (!$var)          /* if null */
            SvOK_off($arg); /* then return as undef instead of reaf to undef */
        else {
            /* setup $arg as a ref to a blessed hash hv */
            MAGIC *mg;
            HV *hv = newHV();
            const char *classname = \"Algorithm::ConsistentHash::Ketama\";
            /* take (sub)class name to use from class_sv if appropriate */
            if (SvMAGICAL(class_sv))



( run in 0.396 second using v1.01-cache-2.11-cpan-4e96b696675 )