Skip to content

Commit 2ca3976

Browse files
lloydzhouhanumantmk
authored andcommitted
add wrap function 'mongoc_stream_write'.
Closes #130
1 parent 7587d72 commit 2ca3976

File tree

9 files changed

+100
-0
lines changed

9 files changed

+100
-0
lines changed

build/autotools/versions.ldscript

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ LIBMONGOC_1.0 {
180180
mongoc_stream_tls_check_cert;
181181
mongoc_stream_tls_do_handshake;
182182
mongoc_stream_tls_new;
183+
mongoc_stream_write;
183184
mongoc_stream_writev;
184185
mongoc_uri_copy;
185186
mongoc_uri_destroy;
@@ -237,6 +238,7 @@ LIBMONGOC_1.1 {
237238
mongoc_socket_check_closed
238239
mongoc_socket_inet_ntop
239240
mongoc_stream_check_closed
241+
mongoc_stream_write
240242
mongoc_uri_get_credentials;
241243
mongoc_uri_get_mechanism_properties;
242244
} LIBMONGOC_1.0;

build/cmake/libmongoc-ssl.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ mongoc_stream_socket_new
197197
mongoc_stream_tls_check_cert
198198
mongoc_stream_tls_do_handshake
199199
mongoc_stream_tls_new
200+
mongoc_stream_write
201+
mongoc_stream_write
200202
mongoc_stream_writev
201203
mongoc_uri_copy
202204
mongoc_uri_destroy

build/cmake/libmongoc.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ mongoc_stream_readv
188188
mongoc_stream_setsockopt
189189
mongoc_stream_socket_get_socket
190190
mongoc_stream_socket_new
191+
mongoc_stream_write
192+
mongoc_stream_write
191193
mongoc_stream_writev
192194
mongoc_uri_copy
193195
mongoc_uri_destroy

doc/mongoc_stream_read.page

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ mongoc_stream_read (mongoc_stream_t *stream,
4848
<section id="seealso">
4949
<title>See Also</title>
5050
<p><link xref="mongoc_stream_readv">mongoc_stream_readv()</link></p>
51+
<p><link xref="mongoc_stream_write">mongoc_stream_write()</link></p>
5152
<p><link xref="mongoc_stream_writev">mongoc_stream_writev()</link></p>
5253
</section>
5354

doc/mongoc_stream_readv.page

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ mongoc_stream_readv (mongoc_stream_t *stream,
4848
<section id="seealso">
4949
<title>See Also</title>
5050
<p><link xref="mongoc_stream_read">mongoc_stream_read()</link></p>
51+
<p><link xref="mongoc_stream_write">mongoc_stream_write()</link></p>
5152
<p><link xref="mongoc_stream_writev">mongoc_stream_writev()</link></p>
5253
</section>
5354

doc/mongoc_stream_write.page

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0"?>
2+
3+
<page xmlns="http://projectmallard.org/1.0/"
4+
type="topic"
5+
style="function"
6+
xmlns:api="http://projectmallard.org/experimental/api/"
7+
xmlns:ui="http://projectmallard.org/experimental/ui/"
8+
id="mongoc_stream_write">
9+
10+
11+
<info>
12+
<link type="guide" xref="mongoc_stream_t" group="function"/>
13+
</info>
14+
<title>mongoc_stream_write()</title>
15+
16+
<section id="synopsis">
17+
<title>Synopsis</title>
18+
<synopsis><code mime="text/x-csrc"><![CDATA[ssize_t
19+
mongoc_stream_write (mongoc_stream_t *stream,
20+
void *buf,
21+
size_t count,
22+
int32_t timeout_msec);
23+
]]></code></synopsis>
24+
</section>
25+
26+
27+
<section id="parameters">
28+
<title>Parameters</title>
29+
<table>
30+
<tr><td><p>stream</p></td><td><p>A <link xref="mongoc_stream_t">mongoc_stream_t</link>.</p></td></tr>
31+
<tr><td><p>buf</p></td><td><p>The buffer to write.</p></td></tr>
32+
<tr><td><p>count</p></td><td><p>The number of bytes to write.</p></td></tr>
33+
<tr><td><p>timeout_msec</p></td><td><p>The number of milliseconds to wait before failure, a timeout of 0 will not block. If negative, use the default timeout.</p></td></tr>
34+
</table>
35+
</section>
36+
37+
<section id="description">
38+
<p>The <link xref="mongoc_stream_read">mongoc_stream_write()</link> function shall perform a write to a <link xref="mongoc_stream_t">mongoc_stream_t</link>. It's modeled on the API and semantics of <code>write()</code>, though the parameters map only loosely.</p>
39+
</section>
40+
41+
<section id="return">
42+
<title>Returns</title>
43+
<p>The <link xref="mongoc_stream_write">mongoc_stream_write</link> function returns the number of bytes write on success. It returns <code>&gt;= 0</code> and <code>&lt; min_bytes</code> when end-of-file is encountered and <code>-1</code> on failure. <code>errno</code> is set upon failure.</p>
44+
</section>
45+
46+
<section id="seealso">
47+
<title>See Also</title>
48+
<p><link xref="mongoc_stream_read">mongoc_stream_read()</link></p>
49+
<p><link xref="mongoc_stream_readv">mongoc_stream_readv()</link></p>
50+
<p><link xref="mongoc_stream_writev">mongoc_stream_writev()</link></p>
51+
</section>
52+
53+
</page>

src/libmongoc.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ mongoc_stream_socket_new
196196
mongoc_stream_tls_check_cert
197197
mongoc_stream_tls_do_handshake
198198
mongoc_stream_tls_new
199+
mongoc_stream_write
199200
mongoc_stream_writev
200201
mongoc_uri_copy
201202
mongoc_uri_destroy

src/mongoc/mongoc-stream.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,40 @@ mongoc_stream_writev (mongoc_stream_t *stream,
131131
RETURN (ret);
132132
}
133133

134+
/**
135+
* mongoc_stream_write:
136+
* @stream: A mongoc_stream_t.
137+
* @buf: A buffer to write.
138+
* @count: The number of bytes to write into @buf.
139+
*
140+
* Simplified access to mongoc_stream_writev(). Creates a single iovec
141+
* with the buffer provided.
142+
*
143+
* Returns: -1 on failure, otherwise the number of bytes write.
144+
*/
145+
ssize_t
146+
mongoc_stream_write (mongoc_stream_t *stream,
147+
void *buf,
148+
size_t count,
149+
int32_t timeout_msec)
150+
{
151+
mongoc_iovec_t iov;
152+
ssize_t ret;
153+
154+
ENTRY;
155+
156+
bson_return_val_if_fail (stream, -1);
157+
bson_return_val_if_fail (buf, -1);
158+
159+
iov.iov_base = buf;
160+
iov.iov_len = count;
161+
162+
BSON_ASSERT (stream->writev);
163+
164+
ret = mongoc_stream_writev (stream, &iov, 1, timeout_msec);
165+
166+
RETURN (ret);
167+
}
134168

135169
/**
136170
* mongoc_stream_readv:

src/mongoc/mongoc-stream.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ ssize_t mongoc_stream_writev (mongoc_stream_t *stream,
6565
mongoc_iovec_t *iov,
6666
size_t iovcnt,
6767
int32_t timeout_msec);
68+
ssize_t mongoc_stream_write (mongoc_stream_t *stream,
69+
void *buf,
70+
size_t count,
71+
int32_t timeout_msec);
6872
ssize_t mongoc_stream_readv (mongoc_stream_t *stream,
6973
mongoc_iovec_t *iov,
7074
size_t iovcnt,

0 commit comments

Comments
 (0)