diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-14 10:55:01 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-14 10:55:01 -0800 |
| commit | 58c24226e1d688a4eb0d5c3e041d0ee12152c045 (patch) | |
| tree | e03e5c5912d7f53edf8663de7393fe07028fd70f /src/core/socket.c | |
| parent | e0543fecaeb01ccdf7512004c54cd72b143b67c8 (diff) | |
| download | nng-58c24226e1d688a4eb0d5c3e041d0ee12152c045.tar.gz nng-58c24226e1d688a4eb0d5c3e041d0ee12152c045.tar.bz2 nng-58c24226e1d688a4eb0d5c3e041d0ee12152c045.zip | |
nn_socket_create() implemented.
Diffstat (limited to 'src/core/socket.c')
| -rw-r--r-- | src/core/socket.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/core/socket.c b/src/core/socket.c index 9c289a94..aeebdf25 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -34,6 +34,7 @@ struct nng_socket { struct nni_protocol s_ops; + void *s_data; /* Protocol private. */ /* options */ /* pipes */ /* endpoints */ @@ -61,7 +62,24 @@ nni_socket_recvq(nng_socket_t s) int nng_socket_create(nng_socket_t *sockp, uint16_t proto) { - return (NNG_EAGAIN); /* XXX: IMPLEMENT ME */ + nng_socket_t sock; + struct nni_protocol *ops; + int rv; + + if ((ops = nni_protocol_find(proto)) == NULL) { + return (NNG_ENOTSUP); + } + if ((sock = nni_alloc(sizeof (*sock))) == NULL) { + return (NNG_ENOMEM); + } + sock->s_ops = *ops; + if ((rv = sock->s_ops.proto_create(&sock->s_data, sock)) != 0) { + nni_free(sock, sizeof (*sock)); + return (rv); + + } + *sockp = sock; + return (0); } int |
