aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/transport/zero_copy.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-07-10 03:09:59 +0000
committerJosh Blum <josh@joshknows.com>2010-07-10 03:09:59 +0000
commit55338617fea9fe79ff62e76e674b6c08580ac562 (patch)
tree1686c74d9abb86a450b9bc1fe25ddb0251b997ab /host/lib/transport/zero_copy.cpp
parente5a05a4476a6b30b2c36bef71a9a67611fae7cc4 (diff)
parentc898ca9751d1b274ae8f8f7afc2d5bc54b6ef30c (diff)
downloaduhd-55338617fea9fe79ff62e76e674b6c08580ac562.tar.gz
uhd-55338617fea9fe79ff62e76e674b6c08580ac562.tar.bz2
uhd-55338617fea9fe79ff62e76e674b6c08580ac562.zip
Merge branch 'error_handling' of ettus.sourcerepo.com:ettus/uhdpriv into usrp_e
Diffstat (limited to 'host/lib/transport/zero_copy.cpp')
-rw-r--r--host/lib/transport/zero_copy.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/host/lib/transport/zero_copy.cpp b/host/lib/transport/zero_copy.cpp
index 27f41329b..42f69d77b 100644
--- a/host/lib/transport/zero_copy.cpp
+++ b/host/lib/transport/zero_copy.cpp
@@ -71,7 +71,9 @@ managed_recv_buffer::sptr phony_zero_copy_recv_if::get_recv_buff(void){
boost::uint8_t *recv_mem = new boost::uint8_t[_impl->max_buff_size];
//call recv() with timeout option
- size_t num_bytes = this->recv(boost::asio::buffer(recv_mem, _impl->max_buff_size));
+ ssize_t num_bytes = this->recv(boost::asio::buffer(recv_mem, _impl->max_buff_size));
+
+ if (num_bytes <= 0) return managed_recv_buffer::sptr(); //NULL sptr
//create a new managed buffer to house the data
return managed_recv_buffer::sptr(
@@ -86,7 +88,7 @@ managed_recv_buffer::sptr phony_zero_copy_recv_if::get_recv_buff(void){
//! phony zero-copy send buffer implementation
class managed_send_buffer_impl : public managed_send_buffer{
public:
- typedef boost::function<size_t(const boost::asio::const_buffer &)> send_fcn_t;
+ typedef boost::function<ssize_t(const boost::asio::const_buffer &)> send_fcn_t;
managed_send_buffer_impl(
const boost::asio::mutable_buffer &buff,
@@ -102,8 +104,8 @@ public:
/* NOP */
}
- void commit(size_t num_bytes){
- _send_fcn(boost::asio::buffer(_buff, num_bytes));
+ ssize_t commit(size_t num_bytes){
+ return _send_fcn(boost::asio::buffer(_buff, num_bytes));
}
private: