本文整理汇总了C++中buffer::get方法的典型用法代码示例。如果您正苦于以下问题:C++ buffer::get方法的具体用法?C++ buffer::get怎么用?C++ buffer::get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buffer
的用法示例。
在下文中一共展示了buffer::get方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: enqueue_copy_buffer
/// Enqueues a command to copy data from \p src_buffer to
/// \p dst_buffer.
///
/// \see_opencl_ref{clEnqueueCopyBuffer}
///
/// \see copy()
event enqueue_copy_buffer(const buffer &src_buffer,
const buffer &dst_buffer,
size_t src_offset,
size_t dst_offset,
size_t size,
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(src_offset + size <= src_buffer.size());
BOOST_ASSERT(dst_offset + size <= dst_buffer.size());
BOOST_ASSERT(src_buffer.get_context() == this->get_context());
BOOST_ASSERT(dst_buffer.get_context() == this->get_context());
event event_;
cl_int ret = clEnqueueCopyBuffer(
m_queue,
src_buffer.get(),
dst_buffer.get(),
src_offset,
dst_offset,
size,
events.size(),
events.get_event_ptr(),
&event_.get()
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
return event_;
}
示例2: cdrIn
io_status pstring::cdrIn(buffer& buf)
{
primitive::cdrIn(buf);
buf.get(v_str_ptr.loc);
buf.get(v_sz);
return done;
}
示例3: recv_handler
/**
* Received message callback. This function is executed to process the
* received messages. If this is a valid message, the message is
* dispatched to the handler defined by the user.
*
* @param buff Message byte buffer.
* @param rbytes Size of the message.
* @param ec Error code.
*/
void link::recv_handler(buffer<uint8>& buff, size_t rbytes,
const boost::system::error_code& ec)
{
if (ec) {
mih::message pm;
_handler(pm, ec);
} else {
mih::frame* fm = mih::frame::cast(buff.get(), rbytes);
if (fm) {
mih::message pm(*fm);
_handler(pm, ec);
}
}
void* rbuff = buff.get();
size_t rlen = buff.size();
_sock.async_receive(boost::asio::buffer(rbuff, rlen),
boost::bind(&link::recv_handler,
this,
bind_rv(buff),
boost::asio::placeholders::bytes_transferred,
boost::asio::placeholders::error));
}
示例4: handle_receive
/**
* Handle the reception of an asynchronous message.
*
* @param buff The input message bytes.
* @param rbytes The number of bytes of the input message.
* @param error The error code.
*/
void udp_listener::handle_receive(buffer<uint8> &buff,
size_t rbytes,
const boost::system::error_code &error)
{
using namespace boost;
if (!error) {
ODTONE_LOG(1, "(udp) received ", rbytes, " bytes.");
ODTONE_LOG(0, "(udp) from ", _rmt_endp.address().to_string(),
" : ", _rmt_endp.port());
mih::frame *pud = mih::frame::cast(buff.get(), rbytes);
if(pud) {
// Decode IP address
mih::octet_string ip;
uint16 scope = 0;
if(_rmt_endp.address().is_v4()) {
boost::asio::ip::address_v4 ip_addr = _rmt_endp.address().to_v4();
ip = ip_addr.to_string();
} else if(_rmt_endp.address().is_v6()) {
boost::asio::ip::address_v6 ip_addr = _rmt_endp.address().to_v6();
scope = ip_addr.scope_id();
ip_addr.scope_id(0);
ip = ip_addr.to_string();
}
// Decode port
uint16 port = _rmt_endp.port();
meta_message_ptr in(new meta_message(ip, scope, port, *pud));
ODTONE_LOG(4, *pud);
// discard messages if multicast messages are not supported
if(utils::is_multicast(in) && !_enable_multicast) {
ODTONE_LOG(1, "(udp) Discarding message! Reason: ",
"multicast messages are not supported");
} else {
_dispatch(in);
}
}
}
void *rbuff = buff.get();
size_t rlen = buff.size();
_sock.async_receive_from(asio::buffer(rbuff, rlen),
_rmt_endp,
bind(&udp_listener::handle_receive,
this,
bind_rv(buff),
asio::placeholders::bytes_transferred,
asio::placeholders::error));
}
示例5: enqueue_fill_buffer
/// Enqueues a command to fill \p buffer with \p pattern.
///
/// \see_opencl_ref{clEnqueueFillBuffer}
///
/// \opencl_version_warning{1,2}
///
/// \see fill()
event enqueue_fill_buffer(const buffer &buffer,
const void *pattern,
size_t pattern_size,
size_t offset,
size_t size,
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(offset + size <= buffer.size());
BOOST_ASSERT(buffer.get_context() == this->get_context());
event event_;
cl_int ret = clEnqueueFillBuffer(
m_queue,
buffer.get(),
pattern,
pattern_size,
offset,
size,
events.size(),
events.get_event_ptr(),
&event_.get()
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
return event_;
}
示例6: enqueue_copy_buffer_to_image
/// Enqueues a command to copy data from \p src_buffer to \p dst_image.
///
/// \see_opencl_ref{clEnqueueCopyBufferToImage}
event enqueue_copy_buffer_to_image(const buffer &src_buffer,
const image3d &dst_image,
size_t src_offset,
const size_t dst_origin[3],
const size_t region[3],
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(src_buffer.get_context() == this->get_context());
BOOST_ASSERT(dst_image.get_context() == this->get_context());
event event_;
cl_int ret = clEnqueueCopyBufferToImage(
m_queue,
src_buffer.get(),
dst_image.get(),
src_offset,
dst_origin,
region,
events.size(),
events.get_event_ptr(),
&event_.get()
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
return event_;
}
示例7: enqueue_copy_image_to_buffer
/// Enqueues a command to copy data from \p src_image to \p dst_buffer.
///
/// \see_opencl_ref{clEnqueueCopyImageToBuffer}
event enqueue_copy_image_to_buffer(const image2d &src_image,
const buffer &dst_buffer,
const size_t src_origin[2],
const size_t region[2],
size_t dst_offset,
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(src_image.get_context() == this->get_context());
BOOST_ASSERT(dst_buffer.get_context() == this->get_context());
const size_t src_origin3[3] = { src_origin[0], src_origin[1], size_t(0) };
const size_t region3[3] = { region[0], region[1], size_t(1) };
event event_;
cl_int ret = clEnqueueCopyImageToBuffer(
m_queue,
src_image.get(),
dst_buffer.get(),
src_origin3,
region3,
dst_offset,
events.size(),
events.get_event_ptr(),
&event_.get()
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
return event_;
}
示例8: get_buffer_identifier
std::string get_buffer_identifier(const buffer &buffer,
const memory_object::address_space address_space =
memory_object::global_memory)
{
// check if we've already seen buffer
for(size_t i = 0; i < m_stored_buffers.size(); i++){
const detail::meta_kernel_buffer_info &bi = m_stored_buffers[i];
if(bi.m_mem == buffer.get() &&
bi.address_space == address_space){
return bi.identifier;
}
}
// create a new binding
std::string identifier =
"_buf" + lexical_cast<std::string>(m_stored_buffers.size());
size_t index = add_arg<T *>(address_space, identifier);
// store new buffer info
m_stored_buffers.push_back(
detail::meta_kernel_buffer_info(buffer, identifier, address_space, index));
return identifier;
}
示例9: enqueue_write_buffer_async
/// Enqueues a command to write data from host memory to \p buffer.
/// The copy is performed asynchronously.
///
/// \see_opencl_ref{clEnqueueWriteBuffer}
///
/// \see copy_async()
event enqueue_write_buffer_async(const buffer &buffer,
size_t offset,
size_t size,
const void *host_ptr,
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(size <= buffer.size());
BOOST_ASSERT(buffer.get_context() == this->get_context());
BOOST_ASSERT(host_ptr != 0);
event event_;
cl_int ret = clEnqueueWriteBuffer(
m_queue,
buffer.get(),
CL_FALSE,
offset,
size,
host_ptr,
events.size(),
events.get_event_ptr(),
&event_.get()
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
return event_;
}
示例10: enqueue_read_buffer
/// Enqueues a command to read data from \p buffer to host memory.
///
/// \see_opencl_ref{clEnqueueReadBuffer}
///
/// \see copy()
void enqueue_read_buffer(const buffer &buffer,
size_t offset,
size_t size,
void *host_ptr,
const wait_list &events = wait_list())
{
BOOST_ASSERT(m_queue != 0);
BOOST_ASSERT(size <= buffer.size());
BOOST_ASSERT(buffer.get_context() == this->get_context());
BOOST_ASSERT(host_ptr != 0);
cl_int ret = clEnqueueReadBuffer(
m_queue,
buffer.get(),
CL_TRUE,
offset,
size,
host_ptr,
events.size(),
events.get_event_ptr(),
0
);
if(ret != CL_SUCCESS){
BOOST_THROW_EXCEPTION(opencl_error(ret));
}
}
示例11: cdrIn
io_status dl_list::cdrIn(buffer& buf)
{
composite::cdrIn(buf);
v_dl_list_head.cdrIn(buf);
v_dl_list_tail.cdrIn(buf);
buf.get(v_num_indices);
return done;
}
示例12: enqueue_unmap_buffer
/// Enqueues a command to unmap \p buffer from the host memory space.
///
/// \see_opencl_ref{clEnqueueUnmapMemObject}
event enqueue_unmap_buffer(const buffer &buffer,
void *mapped_ptr,
const wait_list &events = wait_list())
{
BOOST_ASSERT(buffer.get_context() == this->get_context());
return enqueue_unmap_mem_object(buffer.get(), mapped_ptr, events);
}
示例13: recv_handler
/**
* Received message callback. This function is executed to process the
* received messages. If this is a valid message, the message is
* dispatched to the handler defined by the user.
*
* @param buff Message byte buffer.
* @param rbytes Size of the message.
* @param ec Error code.
*/
void user::recv_handler(buffer<uint8>& buff, size_t rbytes, const boost::system::error_code& ec)
{
if (ec) {
mih::message pm;
_handler(pm, ec);
} else {
mih::frame* fm = mih::frame::cast(buff.get(), rbytes);
if (fm) {
mih::message pm(*fm);
if (fm->opcode() == mih::operation::confirm) {
handler h;
get_handler(fm->tid(), h);
if (h) {
h(pm, ec);
// Unsolicited MIH capability discover reception
} else if(fm->sid() == mih::service::management &&
fm->aid() == mih::action::capability_discover) {
_handler(pm, ec);
} else {
_handler(pm, boost::system::errc::make_error_code(boost::system::errc::bad_message));
}
} else if (fm->opcode() != mih::operation::indication) {
_handler(pm, boost::system::errc::make_error_code(boost::system::errc::bad_message));
} else {
_handler(pm, ec);
}
}
}
void* rbuff = buff.get();
size_t rlen = buff.size();
_sock.async_receive(boost::asio::buffer(rbuff, rlen),
boost::bind(&user::recv_handler,
this,
bind_rv(buff),
boost::asio::placeholders::bytes_transferred,
boost::asio::placeholders::error));
}
示例14:
buffer_iterator_index_expr(const buffer &buffer,
size_t index,
const memory_object::address_space address_space,
const IndexExpr &expr)
: m_buffer(buffer.get(), false),
m_index(index),
m_address_space(address_space),
m_expr(expr)
{
}
示例15: identifier
meta_kernel_buffer_info(const buffer &buffer,
const std::string &id,
memory_object::address_space addr_space,
size_t i)
: m_mem(buffer.get()),
identifier(id),
address_space(addr_space),
index(i)
{
}