73 explicit DataBuffer(
size_t init_size) { resize(init_size); }
81 if (&o ==
this)
return *
this;
88 void take_ownership(
char* new_buf,
size_t new_size) {
92 alloc_size = new_size;
95 void take_ownership_mmapped(
char* new_buf,
size_t new_size) {
99 alloc_size = new_size;
105 void resize(
size_t new_size);
106 void shrink_to_fit();
107 void clear() { resize(0); }
110 void reset(
size_t new_size = 0) {
115 void reserve(
size_t new_size) {
116 size_t old_size = user_size;
121 char* data() {
return buf; }
122 const char* data()
const {
return buf; }
123 size_t size()
const {
return user_size; }
125 MPITask send(
int dst,
int tag, MPI_Comm comm);
128 MPITask recv(
int n,
int src,
int tag, MPI_Comm comm);
131 MPITask recv_unknown(
int src,
int tag, MPI_Comm comm);
135 size_t user_size = 0;
136 size_t alloc_size = 0;
137 bool mmap_buffer =
false;
141 this->user_size = o.user_size;
142 this->alloc_size = o.alloc_size;
143 this->mmap_buffer = o.mmap_buffer;
153 void realloc_buf(
size_t new_size);