#include "perl-couchbase.h"
#include "plcb-util.h"
#include <libcouchbase/vbucket.h>
MODULE = Couchbase::BucketConfig PACKAGE = Couchbase::BucketConfig PREFIX = VB_
PROTOTYPES: DISABLE
int
VB_ix_master(lcbvb_CONFIG *vbc, unsigned vbucket)
CODE:
RETVAL = lcbvb_vbmaster(vbc, vbucket);
OUTPUT: RETVAL
int
VB_ix_replica(lcbvb_CONFIG *vbc, int vbucket, unsigned ix)
CODE:
RETVAL = lcbvb_vbreplica(vbc, vbucket, ix);
OUTPUT: RETVAL
int
VB_to_vbucket(lcbvb_CONFIG *vbc, SV *input)
PREINIT:
STRLEN n = 0;
const char *s = NULL;
CODE:
s = SvPV(input, n);
if (!n) {
die("Passed empty key");
}
RETVAL = lcbvb_k2vb(vbc, s, n);
OUTPUT: RETVAL
const char *
VB__gethostport(lcbvb_CONFIG *vbc, unsigned ix, unsigned svc, unsigned mode)
CODE:
RETVAL = lcbvb_get_hostport(vbc, ix, svc, mode);
if (RETVAL == NULL) { RETVAL = ""; }
OUTPUT: RETVAL
const char *
VB__getcapi(lcbvb_CONFIG *vbc, unsigned ix, int mode)
CODE:
RETVAL = lcbvb_get_capibase(vbc, ix, mode);
if (RETVAL == NULL) { RETVAL = ""; }
OUTPUT: RETVAL
int
VB_nservers(lcbvb_CONFIG *vbc)
CODE:
RETVAL = lcbvb_get_nservers(vbc);
OUTPUT: RETVAL
int
VB_nreplicas(lcbvb_CONFIG *vbc)
CODE:
RETVAL = lcbvb_get_nreplicas(vbc);
OUTPUT: RETVAL
int
VB_rev(lcbvb_CONFIG *vbc)
CODE:
RETVAL = lcbvb_get_revision(vbc);
OUTPUT: RETVAL
SV *
VB_dump(lcbvb_CONFIG *cfg)
PREINIT:
SV *sv;
char *s;
CODE:
s = lcbvb_save_json(cfg);
if (!s) {
die("Couldn't get JSON!");
}
sv = newSV(0);
sv_usepvn(sv, s, strlen(s));
RETVAL = sv;
OUTPUT: RETVAL
lcbvb_CONFIG *
VB_load(const char *s)
PREINIT:
lcbvb_CONFIG * vbc;
CODE:
vbc = lcbvb_create();
if (!vbc) {
die("Couldn't allocate memory");
}
if (0 != lcbvb_load_json(vbc, s)) {
const char *err = lcbvb_get_error(vbc);
lcbvb_destroy(vbc);
die("Couldn't load json: %s", err);
}
RETVAL = vbc;
OUTPUT: RETVAL
void
VB_DESTROY(lcbvb_CONFIG *cfg)
CODE:
lcbvb_destroy(cfg);