MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / receive

Function receive

modules/data/mp3/libmad/decoder.c:215–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213}
214
215static
216enum mad_flow receive(int fd, void **message, unsigned int *size)
217{
218 enum mad_flow result;
219 unsigned int actual;
220
221 if (*message == 0)
222 *size = 0;
223
224 /* receive size */
225
226 result = receive_io(fd, &actual, sizeof(actual));
227
228 /* receive message */
229
230 if (result == MAD_FLOW_CONTINUE) {
231 if (actual > *size)
232 actual -= *size;
233 else {
234 *size = actual;
235 actual = 0;
236 }
237
238 if (*size > 0) {
239 if (*message == 0) {
240 *message = malloc(*size);
241 if (*message == 0)
242 return MAD_FLOW_BREAK;
243 }
244
245 result = receive_io_blocking(fd, *message, *size);
246 }
247
248 /* throw away remainder of message */
249
250 while (actual && result == MAD_FLOW_CONTINUE) {
251 char sink[256];
252 unsigned int len;
253
254 len = actual > sizeof(sink) ? sizeof(sink) : actual;
255
256 result = receive_io_blocking(fd, sink, len);
257
258 actual -= len;
259 }
260 }
261
262 return result;
263}
264
265static
266enum mad_flow check_message(struct mad_decoder *decoder)

Callers 2

check_messageFunction · 0.70
mad_decoder_messageFunction · 0.70

Calls 2

receive_ioFunction · 0.85
receive_io_blockingFunction · 0.85

Tested by

no test coverage detected