From ea741e0285e70e2ca417fbd2c874bb990bdbf833 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Tue, 24 Apr 2018 09:29:34 -0700 Subject: fixes #363 context option plumbing missing --- src/nng.c | 50 +++++++++++++++++++++++++++++++++++++++++++++----- src/nng.h | 4 ++++ 2 files changed, 49 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/nng.c b/src/nng.c index e3108e47..9eb33f50 100644 --- a/src/nng.c +++ b/src/nng.c @@ -326,17 +326,57 @@ nng_ctx_getopt_size(nng_ctx id, const char *name, size_t *vp) } int -nng_ctx_getopt_string(nng_ctx id, const char *name, char **vp) +nng_ctx_getopt_ms(nng_ctx id, const char *name, nng_duration *vp) { size_t sz = sizeof(*vp); - return (nng_ctx_getx(id, name, vp, &sz, NNI_TYPE_STRING)); + return (nng_ctx_getx(id, name, vp, &sz, NNI_TYPE_DURATION)); +} + +static int +nng_ctx_setx(nng_ctx id, const char *n, const void *v, size_t sz, int t) +{ + nni_ctx *ctx; + int rv; + + if ((rv = nni_init()) != 0) { + return (rv); + } + if ((rv = nni_ctx_find(&ctx, id, false)) != 0) { + return (rv); + } + rv = nni_ctx_setopt(ctx, n, v, sz, t); + nni_ctx_rele(ctx); + return (rv); } int -nng_ctx_getopt_ms(nng_ctx id, const char *name, nng_duration *vp) +nng_ctx_setopt(nng_ctx id, const char *name, const void *val, size_t sz) { - size_t sz = sizeof(*vp); - return (nng_ctx_getx(id, name, vp, &sz, NNI_TYPE_DURATION)); + return (nng_ctx_setx(id, name, val, sz, NNI_TYPE_OPAQUE)); +} + +int +nng_ctx_setopt_bool(nng_ctx id, const char *name, bool v) +{ + return (nng_ctx_setx(id, name, &v, sizeof(v), NNI_TYPE_BOOL)); +} + +int +nng_ctx_setopt_int(nng_ctx id, const char *name, int v) +{ + return (nng_ctx_setx(id, name, &v, sizeof(v), NNI_TYPE_INT32)); +} + +int +nng_ctx_setopt_size(nng_ctx id, const char *name, size_t v) +{ + return (nng_ctx_setx(id, name, &v, sizeof(v), NNI_TYPE_SIZE)); +} + +int +nng_ctx_setopt_ms(nng_ctx id, const char *name, nng_duration v) +{ + return (nng_ctx_setx(id, name, &v, sizeof(v), NNI_TYPE_DURATION)); } int diff --git a/src/nng.h b/src/nng.h index 57d66915..40aef567 100644 --- a/src/nng.h +++ b/src/nng.h @@ -377,6 +377,10 @@ NNG_DECL int nng_ctx_getopt_size(nng_ctx, const char *, size_t *); // tunables (which does include NNG_OPT_SENDTIMEO and NNG_OPT_RECVTIMEO); // see the protocol documentation for more details. NNG_DECL int nng_ctx_setopt(nng_ctx, const char *, const void *, size_t); +NNG_DECL int nng_ctx_setopt_bool(nng_ctx, const char *, bool); +NNG_DECL int nng_ctx_setopt_int(nng_ctx, const char *, int); +NNG_DECL int nng_ctx_setopt_ms(nng_ctx, const char *, nng_duration); +NNG_DECL int nng_ctx_setopt_size(nng_ctx, const char *, size_t); // nng_alloc is used to allocate memory. It's intended purpose is for // allocating memory suitable for message buffers with nng_send(). -- cgit v1.2.3-70-g09d2