From d61e8cacdaea0235f564a7e966c5742bc1f010d8 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 7 Mar 2016 21:46:20 -0800 Subject: Record adapter passes through socket ops. * stream.c (delegate_get_sock_family, delegate_get_sock_type, delegate_get_sock_peer, delegate_set_sock_peer): New static functions. (stream_init): Wire new functions in record_adapter_ops. --- stream.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'stream.c') diff --git a/stream.c b/stream.c index 0bed866a..d4b71dc7 100644 --- a/stream.c +++ b/stream.c @@ -2210,6 +2210,30 @@ static val delegate_get_fd(val stream) return s->target_ops->get_fd(s->target_stream); } +static val delegate_get_sock_family(val stream) +{ + struct delegate_base *s = coerce(struct delegate_base *, stream->co.handle); + return s->target_ops->get_sock_family(s->target_stream); +} + +static val delegate_get_sock_type(val stream) +{ + struct delegate_base *s = coerce(struct delegate_base *, stream->co.handle); + return s->target_ops->get_sock_type(s->target_stream); +} + +static val delegate_get_sock_peer(val stream) +{ + struct delegate_base *s = coerce(struct delegate_base *, stream->co.handle); + return s->target_ops->get_sock_peer(s->target_stream); +} + +static val delegate_set_sock_peer(val stream, val peer) +{ + struct delegate_base *s = coerce(struct delegate_base *, stream->co.handle); + return s->target_ops->set_sock_peer(s->target_stream, peer); +} + static val make_delegate_stream(val orig_stream, size_t handle_size, struct cobj_ops *ops) { @@ -3802,5 +3826,10 @@ void stream_init(void) stdio_sock_ops.get_sock_type = stdio_get_sock_type; stdio_sock_ops.get_sock_peer = stdio_get_sock_peer; stdio_sock_ops.set_sock_peer = stdio_set_sock_peer; + + record_adapter_ops.get_sock_family = delegate_get_sock_family; + record_adapter_ops.get_sock_type = delegate_get_sock_type; + record_adapter_ops.get_sock_peer = delegate_get_sock_peer; + record_adapter_ops.set_sock_peer = delegate_set_sock_peer; #endif } -- cgit v1.2.3