ssize_t sock_comm_peek(struct sock_conn *conn, void *buf, size_t len) { sock_comm_recv_buffer(conn); if (rbused(&conn->inbuf) >= len) { rbpeek(&conn->inbuf, buf, len); return len; } return 0; }
ssize_t sock_comm_recv(struct sock_conn *conn, void *buf, size_t len) { int ret = 0; ssize_t used, read_len; used = rbused(&conn->inbuf); if (used == 0) { ret = sock_comm_recv_socket(conn, buf, len); sock_comm_recv_buffer(conn); return ret; } read_len = MIN(len, used); rbread(&conn->inbuf, buf, read_len); if (len > used) { ret = sock_comm_recv_socket(conn, (char*) buf + used, len - used); if (ret <= 0) ret = 0; sock_comm_recv_buffer(conn); } SOCK_LOG_INFO("read from buffer: %lu\n", ret + read_len); return ret + read_len; }
ssize_t sock_comm_recv(struct sock_pe_entry *pe_entry, void *buf, size_t len) { ssize_t read_len; if (ofi_rbempty(&pe_entry->comm_buf)) { if (len <= pe_entry->cache_sz) { sock_comm_recv_buffer(pe_entry); } else { return sock_comm_recv_socket(pe_entry->conn, buf, len); } } read_len = MIN(len, ofi_rbused(&pe_entry->comm_buf)); ofi_rbread(&pe_entry->comm_buf, buf, read_len); SOCK_LOG_DBG("read from buffer: %lu\n", read_len); return read_len; }