svn_ra_svn__stream_t * svn_ra_svn__stream_from_sock(apr_socket_t *sock, apr_pool_t *pool) { sock_baton_t *b = apr_palloc(pool, sizeof(*b)); b->sock = sock; b->pool = pool; return svn_ra_svn__stream_create(b, sock_read_cb, sock_write_cb, sock_timeout_cb, sock_pending_cb, pool); }
svn_ra_svn__stream_t * svn_ra_svn__stream_from_files(apr_file_t *in_file, apr_file_t *out_file, apr_pool_t *pool) { file_baton_t *b = apr_palloc(pool, sizeof(*b)); b->in_file = in_file; b->out_file = out_file; b->pool = pool; return svn_ra_svn__stream_create(b, file_read_cb, file_write_cb, file_timeout_cb, file_pending_cb, pool); }
svn_ra_svn__stream_t * svn_ra_svn__stream_from_sock(apr_socket_t *sock, apr_pool_t *result_pool) { sock_baton_t *b = apr_palloc(result_pool, sizeof(*b)); svn_stream_t *sock_stream; b->sock = sock; b->pool = svn_pool_create(result_pool); sock_stream = svn_stream_create(b, result_pool); svn_stream_set_read2(sock_stream, sock_read_cb, NULL /* use default */); svn_stream_set_write(sock_stream, sock_write_cb); svn_stream_set_data_available(sock_stream, sock_pending_cb); return svn_ra_svn__stream_create(sock_stream, sock_stream, b, sock_timeout_cb, result_pool); }
svn_ra_svn__stream_t * svn_ra_svn__stream_from_streams(svn_stream_t *in_stream, svn_stream_t *out_stream, apr_pool_t *pool) { apr_file_t *file; /* If out_stream is backed by an apr_file (e.g. an PIPE) we provide a working callback, otherwise the callback ignores the timeout. The callback is used to make the write non-blocking on some error scenarios. ### This (legacy) usage breaks the stream promise */ file = svn_stream__aprfile(out_stream); return svn_ra_svn__stream_create(in_stream, out_stream, file, file_timeout_cb, pool); }