diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-03-07 21:46:20 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-03-07 21:46:20 -0800 |
commit | d61e8cacdaea0235f564a7e966c5742bc1f010d8 (patch) | |
tree | 458cf979032744e21d637b6aee4871fc685c2e54 | |
parent | 17f693051c809f27dfcfb3115a9f889be64d3084 (diff) | |
download | txr-d61e8cacdaea0235f564a7e966c5742bc1f010d8.tar.gz txr-d61e8cacdaea0235f564a7e966c5742bc1f010d8.tar.bz2 txr-d61e8cacdaea0235f564a7e966c5742bc1f010d8.zip |
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.
-rw-r--r-- | stream.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -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 } |