pdu_to_blob: create blob directly from u8_vector
This commit is contained in:
+6
-11
@@ -42,26 +42,21 @@ pdu_to_blob_impl() :
|
|||||||
|
|
||||||
void make_blob(pmt::pmt_t msg) {
|
void make_blob(pmt::pmt_t msg) {
|
||||||
|
|
||||||
assert(pmt::is_pair(msg));
|
if(!pmt::is_pair(msg))
|
||||||
|
throw std::invalid_argument("this block expects PDUs as input");
|
||||||
|
|
||||||
pmt::pmt_t vec = pmt::cdr(msg);
|
pmt::pmt_t vec = pmt::cdr(msg);
|
||||||
assert(pmt::is_u8vector(vec));
|
|
||||||
|
if(!pmt::is_u8vector(vec))
|
||||||
|
throw std::invalid_argument("this block expects PDUs as input");
|
||||||
|
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
const void *data = pmt::uniform_vector_elements(vec, len);
|
const void *data = pmt::uniform_vector_elements(vec, len);
|
||||||
assert(len < 4000);
|
|
||||||
|
|
||||||
std::memcpy(buf, data, len);
|
|
||||||
|
|
||||||
pmt::pmt_t blob = pmt::make_blob(buf, len);
|
|
||||||
|
|
||||||
|
pmt::pmt_t blob = pmt::make_blob(data, len);
|
||||||
message_port_pub(pmt::mp("out"), blob);
|
message_port_pub(pmt::mp("out"), blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
char buf[4000];
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pdu_to_blob::sptr
|
pdu_to_blob::sptr
|
||||||
|
|||||||
Reference in New Issue
Block a user