Algorithm-ConsistentHash-Ketama

 view release on metacpan or  search on metacpan

xs/Ketama.xs  view on Meta::CPAN

        int weight;

void
PerlKetama_remove_bucket(ketama, label)
        PerlKetama *ketama;
        char *label;

void
PerlKetama_buckets(ketama)
        PerlKetama *ketama;
    PPCODE:
        /* since PerlKetama_buckets may push an unknown number of items
           into the Perl stash, this is required */
        XSRETURN( PerlKetama_buckets(ketama) );

char *
PerlKetama_hash(ketama, thing)
        PerlKetama* ketama;
        SV *thing;

void
PerlKetama_hash_with_hashnum(ketama, thing)
        PerlKetama* ketama;
        SV *thing;
    PREINIT:
        unsigned int hash;
        char *ptr;
        STRLEN len;
        char *label;
    PPCODE:
        ptr = SvPV(thing, len);
        label = ketama->hashfunc(ketama, ptr, len, &hash);
        mXPUSHp(label, strlen(label));
        mXPUSHu(hash);
        XSRETURN(2);

void
PerlKetama_label_from_hashnum(ketama, thing)
        PerlKetama* ketama;
        unsigned int thing;
    PREINIT:
        char *label;
    PPCODE:
        label = ketama->hashfunc(ketama, NULL, 0, &thing);
        XPUSHs(sv_2mortal(newSVpv(label, strlen(label))));
        XSRETURN(1);

PerlKetama *
PerlKetama_clone(ketama)
        PerlKetama *ketama;
    PREINIT:
        SV *class_sv = ST(0);



( run in 0.437 second using v1.01-cache-2.11-cpan-71847e10f99 )