OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ | 5 #ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ |
6 #define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ | 6 #define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ |
7 | 7 |
8 #ifdef __cplusplus | 8 #ifdef __cplusplus |
9 extern "C" { | 9 extern "C" { |
10 #endif | 10 #endif |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 * methods are invoked synchronously on the |engine| network thread, but must | 119 * methods are invoked synchronously on the |engine| network thread, but must |
120 * not run tasks on the current thread to prevent blocking networking operations | 120 * not run tasks on the current thread to prevent blocking networking operations |
121 * and causing exceptions during shutdown. The |annotation| is stored in | 121 * and causing exceptions during shutdown. The |annotation| is stored in |
122 * bidirectional stream for arbitrary use by application. | 122 * bidirectional stream for arbitrary use by application. |
123 * | 123 * |
124 * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be | 124 * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be |
125 * destroyed using |cronet_bidirectional_stream_destroy|. | 125 * destroyed using |cronet_bidirectional_stream_destroy|. |
126 * | 126 * |
127 * Both |calback| and |engine| must remain valid until stream is destroyed. | 127 * Both |calback| and |engine| must remain valid until stream is destroyed. |
128 */ | 128 */ |
| 129 __attribute__((visibility("default"))) |
129 cronet_bidirectional_stream* cronet_bidirectional_stream_create( | 130 cronet_bidirectional_stream* cronet_bidirectional_stream_create( |
130 cronet_engine* engine, | 131 cronet_engine* engine, |
131 void* annotation, | 132 void* annotation, |
132 cronet_bidirectional_stream_callback* callback); | 133 cronet_bidirectional_stream_callback* callback); |
133 | 134 |
134 /* TBD: The following methods return int. Should it be a custom type? */ | 135 /* TBD: The following methods return int. Should it be a custom type? */ |
135 | 136 |
136 /* Destroy stream object. Destroy could be called from any thread, including | 137 /* Destroy stream object. Destroy could be called from any thread, including |
137 * network thread, but is posted, so |stream| is valid until calling task is | 138 * network thread, but is posted, so |stream| is valid until calling task is |
138 * complete. | 139 * complete. |
139 */ | 140 */ |
| 141 __attribute__((visibility("default"))) |
140 int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream); | 142 int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream); |
141 | 143 |
142 /* Start the stream by sending request to |url| using |method| and |headers|. If | 144 /* Start the stream by sending request to |url| using |method| and |headers|. If |
143 * |end_of_stream| is true, then no data is expected to be written. The |method| | 145 * |end_of_stream| is true, then no data is expected to be written. The |method| |
144 * is HTTP verb, with PUT having a special meaning to mark idempotent request, | 146 * is HTTP verb, with PUT having a special meaning to mark idempotent request, |
145 * which could use QUIC 0-RTT. | 147 * which could use QUIC 0-RTT. |
146 */ | 148 */ |
| 149 __attribute__((visibility("default"))) |
147 int cronet_bidirectional_stream_start( | 150 int cronet_bidirectional_stream_start( |
148 cronet_bidirectional_stream* stream, | 151 cronet_bidirectional_stream* stream, |
149 const char* url, | 152 const char* url, |
150 int priority, | 153 int priority, |
151 const char* method, | 154 const char* method, |
152 const cronet_bidirectional_stream_header_array* headers, | 155 const cronet_bidirectional_stream_header_array* headers, |
153 bool end_of_stream); | 156 bool end_of_stream); |
154 | 157 |
155 /* Read response data into |buffer| of |capacity| length. Must only be called at | 158 /* Read response data into |buffer| of |capacity| length. Must only be called at |
156 * most once in response to each invocation of the | 159 * most once in response to each invocation of the |
157 * on_response_headers_received() and on_read_completed() methods of the | 160 * on_response_headers_received() and on_read_completed() methods of the |
158 * cronet_bidirectional_stream_callback. | 161 * cronet_bidirectional_stream_callback. |
159 * Each call will result in an invocation of the callback's | 162 * Each call will result in an invocation of the callback's |
160 * on_read_completed() method if data is read, or its on_failed() method if | 163 * on_read_completed() method if data is read, or its on_failed() method if |
161 * there's an error. The callback's on_succeeded() method is also invoked if | 164 * there's an error. The callback's on_succeeded() method is also invoked if |
162 * there is no more data to read and |end_of_stream| was previously sent. | 165 * there is no more data to read and |end_of_stream| was previously sent. |
163 */ | 166 */ |
| 167 __attribute__((visibility("default"))) |
164 int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream, | 168 int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream, |
165 char* buffer, | 169 char* buffer, |
166 int capacity); | 170 int capacity); |
167 | 171 |
168 /* Write request data from |buffer| of |buffer_length| length. Must only be | 172 /* Write request data from |buffer| of |buffer_length| length. Must only be |
169 * called at most once in response to each invocation of the | 173 * called at most once in response to each invocation of the |
170 * on_request_headers_sent() and on_write_completed() methods of the | 174 * on_request_headers_sent() and on_write_completed() methods of the |
171 * cronet_bidirectional_stream_callback. | 175 * cronet_bidirectional_stream_callback. |
172 * Each call will result in an invocation the callback's on_write_completed() | 176 * Each call will result in an invocation the callback's on_write_completed() |
173 * method if data is sent, or its on_failed() method if there's an error. | 177 * method if data is sent, or its on_failed() method if there's an error. |
174 * The callback's on_succeeded() method is also invoked if |end_of_stream| is | 178 * The callback's on_succeeded() method is also invoked if |end_of_stream| is |
175 * set and all response data has been read. | 179 * set and all response data has been read. |
176 */ | 180 */ |
| 181 __attribute__((visibility("default"))) |
177 int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream, | 182 int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream, |
178 const char* buffer, | 183 const char* buffer, |
179 int buffer_length, | 184 int buffer_length, |
180 bool end_of_stream); | 185 bool end_of_stream); |
181 | 186 |
182 /* Cancels the stream. Can be called at any time after | 187 /* Cancels the stream. Can be called at any time after |
183 * cronet_bidirectional_stream_start(). The on_canceled() method of | 188 * cronet_bidirectional_stream_start(). The on_canceled() method of |
184 * cronet_bidirectional_stream_callback will be invoked when cancelation | 189 * cronet_bidirectional_stream_callback will be invoked when cancelation |
185 * is complete and no further callback methods will be invoked. If the | 190 * is complete and no further callback methods will be invoked. If the |
186 * stream has completed or has not started, calling | 191 * stream has completed or has not started, calling |
187 * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not | 192 * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not |
188 * be invoked. At most one callback method may be invoked after | 193 * be invoked. At most one callback method may be invoked after |
189 * cronet_bidirectional_stream_cancel() has completed. | 194 * cronet_bidirectional_stream_cancel() has completed. |
190 */ | 195 */ |
| 196 __attribute__((visibility("default"))) |
191 int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream); | 197 int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream); |
192 | 198 |
193 /* Returns true if the |stream| was successfully started and is now done | 199 /* Returns true if the |stream| was successfully started and is now done |
194 * (succeeded, canceled, or failed). | 200 * (succeeded, canceled, or failed). |
195 * Returns false if the |stream| stream is not yet started or is in progress. | 201 * Returns false if the |stream| stream is not yet started or is in progress. |
196 */ | 202 */ |
| 203 __attribute__((visibility("default"))) |
197 bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream); | 204 bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream); |
198 | 205 |
199 #ifdef __cplusplus | 206 #ifdef __cplusplus |
200 } | 207 } |
201 #endif | 208 #endif |
202 | 209 |
203 #endif // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ | 210 #endif // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_ |
OLD | NEW |