+Buffer::AsyncTransfer Buffer::sub_data_async(size_t off, size_t sz)
+{
+ check_sub_data(off, sz, "Buffer::sub_data_async");
+ return AsyncTransfer(*this, off, sz);
+}
+
+void Buffer::check_sub_data(size_t off, size_t sz, const char *func)
+{
+ if(size==0)
+ throw invalid_operation(func);
+ if(off>get_total_size() || off%size+sz>size)
+ throw out_of_range(func);
+}
+