Changeset 55 for pjproject/trunk/pjlib/src/pj/ioqueue_common_abs.c
- Timestamp:
- Nov 19, 2005 1:19:28 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pj/ioqueue_common_abs.c
r51 r55 492 492 unsigned flags ) 493 493 { 494 pj_status_t status;495 pj_ssize_t size;496 494 struct read_operation *read_op; 497 495 … … 504 502 /* Try to see if there's data immediately available. 505 503 */ 506 size = *length; 507 status = pj_sock_recv(key->fd, buffer, &size, flags); 508 if (status == PJ_SUCCESS) { 509 /* Yes! Data is available! */ 510 *length = size; 511 return PJ_SUCCESS; 512 } else { 513 /* If error is not EWOULDBLOCK (or EAGAIN on Linux), report 514 * the error to caller. 515 */ 516 if (status != PJ_STATUS_FROM_OS(PJ_BLOCKING_ERROR_VAL)) 517 return status; 518 } 504 if ((flags & PJ_IOQUEUE_ALWAYS_ASYNC) == 0) { 505 pj_status_t status; 506 pj_ssize_t size; 507 508 size = *length; 509 status = pj_sock_recv(key->fd, buffer, &size, flags); 510 if (status == PJ_SUCCESS) { 511 /* Yes! Data is available! */ 512 *length = size; 513 return PJ_SUCCESS; 514 } else { 515 /* If error is not EWOULDBLOCK (or EAGAIN on Linux), report 516 * the error to caller. 517 */ 518 if (status != PJ_STATUS_FROM_OS(PJ_BLOCKING_ERROR_VAL)) 519 return status; 520 } 521 } 522 523 flags &= ~(PJ_IOQUEUE_ALWAYS_ASYNC); 519 524 520 525 /* … … 548 553 int *addrlen) 549 554 { 550 pj_status_t status;551 pj_ssize_t size;552 555 struct read_operation *read_op; 553 556 … … 560 563 /* Try to see if there's data immediately available. 561 564 */ 562 size = *length; 563 status = pj_sock_recvfrom(key->fd, buffer, &size, flags, 564 addr, addrlen); 565 if (status == PJ_SUCCESS) { 566 /* Yes! Data is available! */ 567 *length = size; 568 return PJ_SUCCESS; 569 } else { 570 /* If error is not EWOULDBLOCK (or EAGAIN on Linux), report 571 * the error to caller. 572 */ 573 if (status != PJ_STATUS_FROM_OS(PJ_BLOCKING_ERROR_VAL)) 574 return status; 575 } 565 if ((flags & PJ_IOQUEUE_ALWAYS_ASYNC) == 0) { 566 pj_status_t status; 567 pj_ssize_t size; 568 569 size = *length; 570 status = pj_sock_recvfrom(key->fd, buffer, &size, flags, 571 addr, addrlen); 572 if (status == PJ_SUCCESS) { 573 /* Yes! Data is available! */ 574 *length = size; 575 return PJ_SUCCESS; 576 } else { 577 /* If error is not EWOULDBLOCK (or EAGAIN on Linux), report 578 * the error to caller. 579 */ 580 if (status != PJ_STATUS_FROM_OS(PJ_BLOCKING_ERROR_VAL)) 581 return status; 582 } 583 } 584 585 flags &= ~(PJ_IOQUEUE_ALWAYS_ASYNC); 576 586 577 587 /* … … 614 624 write_op = (struct write_operation*)op_key; 615 625 write_op->op = 0; 626 627 /* We can not use PJ_IOQUEUE_ALWAYS_ASYNC for socket write. */ 628 flags &= ~(PJ_IOQUEUE_ALWAYS_ASYNC); 616 629 617 630 /* Fast track: … … 676 689 const void *data, 677 690 pj_ssize_t *length, 678 unsignedflags,691 pj_uint32_t flags, 679 692 const pj_sockaddr_t *addr, 680 693 int addrlen) … … 689 702 write_op = (struct write_operation*)op_key; 690 703 write_op->op = 0; 704 705 /* We can not use PJ_IOQUEUE_ALWAYS_ASYNC for socket write */ 706 flags &= ~(PJ_IOQUEUE_ALWAYS_ASYNC); 691 707 692 708 /* Fast track:
Note: See TracChangeset
for help on using the changeset viewer.