MCPcopy Create free account
hub / github.com/ceph/ceph / proxy_link_send

Function proxy_link_send

src/libcephfs_proxy/proxy_link.c:798–831  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

796}
797
798int32_t proxy_link_send(int32_t sd, struct iovec *iov, int32_t count)
799{
800 struct iovec iov_copy[count];
801 ssize_t len;
802 int32_t total;
803
804 memcpy(iov_copy, iov, sizeof(struct iovec) * count);
805 iov = iov_copy;
806
807 total = 0;
808 while (count > 0) {
809 len = writev(sd, iov, count);
810 if (len < 0) {
811 return proxy_log(LOG_ERR, errno, "Failed to send data");
812 }
813 if (len == 0) {
814 return proxy_log(LOG_ERR, ENOBUFS, "Partial write");
815 }
816 total += len;
817
818 while ((count > 0) && (iov->iov_len <= len)) {
819 len -= iov->iov_len;
820 iov++;
821 count--;
822 }
823
824 if (count > 0) {
825 iov->iov_base = (char *)iov->iov_base + len;
826 iov->iov_len -= len;
827 }
828 }
829
830 return total;
831}
832
833int32_t proxy_link_recv(int32_t sd, struct iovec *iov, int32_t count)
834{

Callers 2

proxy_link_req_sendFunction · 0.85
proxy_link_ans_sendFunction · 0.85

Calls 2

writevFunction · 0.85
proxy_logFunction · 0.85

Tested by

no test coverage detected