#include "librados/librados_c.h"
#include "librados/AioCompletionImpl.h"
#include "librados/IoCtxImpl.h"
+#include "librados/ObjectOperationImpl.h"
#include "librados/PoolAsyncCompletionImpl.h"
#include "librados/RadosClient.h"
#include "librados/RadosXattrIter.h"
extern "C" rados_write_op_t LIBRADOS_C_API_DEFAULT_F(rados_create_write_op)()
{
tracepoint(librados, rados_create_write_op_enter);
- rados_write_op_t retval = new (std::nothrow)::ObjectOperation;
+ rados_write_op_t retval = new (std::nothrow) librados::ObjectOperationImpl;
tracepoint(librados, rados_create_write_op_exit, retval);
return retval;
}
rados_write_op_t write_op)
{
tracepoint(librados, rados_release_write_op_enter, write_op);
- delete (::ObjectOperation*)write_op;
+ delete static_cast<librados::ObjectOperationImpl*>(write_op);
tracepoint(librados, rados_release_write_op_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_release_write_op);
+static ::ObjectOperation* to_object_operation(rados_write_op_t write_op)
+{
+ return &static_cast<librados::ObjectOperationImpl*>(write_op)->o;
+}
+
extern "C" void LIBRADOS_C_API_DEFAULT_F(rados_write_op_set_flags)(
rados_write_op_t write_op,
int flags)
{
tracepoint(librados, rados_write_op_set_flags_enter, write_op, flags);
- ((::ObjectOperation *)write_op)->set_last_op_flags(get_op_flags(flags));
+ to_object_operation(write_op)->set_last_op_flags(get_op_flags(flags));
tracepoint(librados, rados_write_op_set_flags_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_set_flags);
uint64_t ver)
{
tracepoint(librados, rados_write_op_assert_version_enter, write_op, ver);
- ((::ObjectOperation *)write_op)->assert_version(ver);
+ to_object_operation(write_op)->assert_version(ver);
tracepoint(librados, rados_write_op_assert_version_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_assert_version);
rados_write_op_t write_op)
{
tracepoint(librados, rados_write_op_assert_exists_enter, write_op);
- ((::ObjectOperation *)write_op)->stat(nullptr, nullptr, nullptr);
+ to_object_operation(write_op)->stat(nullptr, nullptr, nullptr);
tracepoint(librados, rados_write_op_assert_exists_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_assert_exists);
{
tracepoint(librados, rados_write_op_cmpext_enter, write_op, cmp_buf,
cmp_len, off, prval);
- ((::ObjectOperation *)write_op)->cmpext(off, cmp_len, cmp_buf, prval);
+ to_object_operation(write_op)->cmpext(off, cmp_len, cmp_buf, prval);
tracepoint(librados, rados_write_op_cmpext_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_cmpext);
tracepoint(librados, rados_write_op_cmpxattr_enter, write_op, name, comparison_operator, value, value_len);
bufferlist bl;
bl.append(value, value_len);
- ((::ObjectOperation *)write_op)->cmpxattr(name,
- comparison_operator,
- CEPH_OSD_CMPXATTR_MODE_STRING,
- bl);
+ to_object_operation(write_op)->cmpxattr(name,
+ comparison_operator,
+ CEPH_OSD_CMPXATTR_MODE_STRING,
+ bl);
tracepoint(librados, rados_write_op_cmpxattr_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_cmpxattr);
int *prval)
{
tracepoint(librados, rados_write_op_omap_cmp_enter, write_op, key, comparison_operator, val, val_len, prval);
- rados_c_omap_cmp((::ObjectOperation *)write_op, key, comparison_operator,
+ rados_c_omap_cmp(to_object_operation(write_op), key, comparison_operator,
val, strlen(key), val_len, prval);
tracepoint(librados, rados_write_op_omap_cmp_exit);
}
int *prval)
{
tracepoint(librados, rados_write_op_omap_cmp_enter, write_op, key, comparison_operator, val, val_len, prval);
- rados_c_omap_cmp((::ObjectOperation *)write_op, key, comparison_operator,
+ rados_c_omap_cmp(to_object_operation(write_op), key, comparison_operator,
val, key_len, val_len, prval);
tracepoint(librados, rados_write_op_omap_cmp_exit);
}
tracepoint(librados, rados_write_op_setxattr_enter, write_op, name, value, value_len);
bufferlist bl;
bl.append(value, value_len);
- ((::ObjectOperation *)write_op)->setxattr(name, bl);
+ to_object_operation(write_op)->setxattr(name, bl);
tracepoint(librados, rados_write_op_setxattr_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_setxattr);
const char *name)
{
tracepoint(librados, rados_write_op_rmxattr_enter, write_op, name);
- ((::ObjectOperation *)write_op)->rmxattr(name);
+ to_object_operation(write_op)->rmxattr(name);
tracepoint(librados, rados_write_op_rmxattr_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_rmxattr);
const char* category) // unused
{
tracepoint(librados, rados_write_op_create_enter, write_op, exclusive);
- ::ObjectOperation *oo = (::ObjectOperation *) write_op;
- oo->create(!!exclusive);
+ to_object_operation(write_op)->create(!!exclusive);
tracepoint(librados, rados_write_op_create_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_create);
tracepoint(librados, rados_write_op_write_enter, write_op, buffer, len, offset);
bufferlist bl;
bl.append(buffer,len);
- ((::ObjectOperation *)write_op)->write(offset, bl);
+ to_object_operation(write_op)->write(offset, bl);
tracepoint(librados, rados_write_op_write_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_write);
tracepoint(librados, rados_write_op_write_full_enter, write_op, buffer, len);
bufferlist bl;
bl.append(buffer,len);
- ((::ObjectOperation *)write_op)->write_full(bl);
+ to_object_operation(write_op)->write_full(bl);
tracepoint(librados, rados_write_op_write_full_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_write_full);
tracepoint(librados, rados_write_op_writesame_enter, write_op, buffer, data_len, write_len, offset);
bufferlist bl;
bl.append(buffer, data_len);
- ((::ObjectOperation *)write_op)->writesame(offset, write_len, bl);
+ to_object_operation(write_op)->writesame(offset, write_len, bl);
tracepoint(librados, rados_write_op_writesame_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_writesame);
tracepoint(librados, rados_write_op_append_enter, write_op, buffer, len);
bufferlist bl;
bl.append(buffer,len);
- ((::ObjectOperation *)write_op)->append(bl);
+ to_object_operation(write_op)->append(bl);
tracepoint(librados, rados_write_op_append_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_append);
rados_write_op_t write_op)
{
tracepoint(librados, rados_write_op_remove_enter, write_op);
- ((::ObjectOperation *)write_op)->remove();
+ to_object_operation(write_op)->remove();
tracepoint(librados, rados_write_op_remove_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_remove);
uint64_t offset)
{
tracepoint(librados, rados_write_op_truncate_enter, write_op, offset);
- ((::ObjectOperation *)write_op)->truncate(offset);
+ to_object_operation(write_op)->truncate(offset);
tracepoint(librados, rados_write_op_truncate_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_truncate);
uint64_t len)
{
tracepoint(librados, rados_write_op_zero_enter, write_op, offset, len);
- ((::ObjectOperation *)write_op)->zero(offset, len);
+ to_object_operation(write_op)->zero(offset, len);
tracepoint(librados, rados_write_op_zero_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_zero);
tracepoint(librados, rados_write_op_exec_enter, write_op, cls, method, in_buf, in_len, prval);
bufferlist inbl;
inbl.append(in_buf, in_len);
- ((::ObjectOperation *)write_op)->call(cls, method, inbl, NULL, NULL, prval);
+ to_object_operation(write_op)->call(cls, method, inbl, NULL, NULL, prval);
tracepoint(librados, rados_write_op_exec_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_exec);
bl.append(vals[i], lens[i]);
entries[keys[i]] = bl;
}
- ((::ObjectOperation *)write_op)->omap_set(entries);
+ to_object_operation(write_op)->omap_set(entries);
tracepoint(librados, rados_write_op_omap_set_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_set);
string key(keys[i], key_lens[i]);
entries[key] = bl;
}
- ((::ObjectOperation *)write_op)->omap_set(entries);
+ to_object_operation(write_op)->omap_set(entries);
tracepoint(librados, rados_write_op_omap_set_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_set2);
tracepoint(librados, rados_write_op_omap_rm_keys_entry, keys[i]);
}
std::set<std::string> to_remove(keys, keys + keys_len);
- ((::ObjectOperation *)write_op)->omap_rm_keys(to_remove);
+ to_object_operation(write_op)->omap_rm_keys(to_remove);
tracepoint(librados, rados_write_op_omap_rm_keys_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_rm_keys);
for(size_t i = 0; i < keys_len; i++) {
to_remove.emplace(keys[i], key_lens[i]);
}
- ((::ObjectOperation *)write_op)->omap_rm_keys(to_remove);
+ to_object_operation(write_op)->omap_rm_keys(to_remove);
tracepoint(librados, rados_write_op_omap_rm_keys_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_rm_keys2);
{
tracepoint(librados, rados_write_op_omap_rm_range_enter,
write_op, key_begin, key_end);
- ((::ObjectOperation *)write_op)->omap_rm_range({key_begin, key_begin_len},
- {key_end, key_end_len});
+ to_object_operation(write_op)->omap_rm_range({key_begin, key_begin_len},
+ {key_end, key_end_len});
tracepoint(librados, rados_write_op_omap_rm_range_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_rm_range2);
rados_write_op_t write_op)
{
tracepoint(librados, rados_write_op_omap_clear_enter, write_op);
- ((::ObjectOperation *)write_op)->omap_clear();
+ to_object_operation(write_op)->omap_clear();
tracepoint(librados, rados_write_op_omap_clear_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_clear);
uint64_t expected_write_size)
{
tracepoint(librados, rados_write_op_set_alloc_hint_enter, write_op, expected_object_size, expected_write_size);
- ((::ObjectOperation *)write_op)->set_alloc_hint(expected_object_size,
- expected_write_size, 0);
+ to_object_operation(write_op)->set_alloc_hint(expected_object_size,
+ expected_write_size, 0);
tracepoint(librados, rados_write_op_set_alloc_hint_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_set_alloc_hint);
uint32_t flags)
{
tracepoint(librados, rados_write_op_set_alloc_hint2_enter, write_op, expected_object_size, expected_write_size, flags);
- ((::ObjectOperation *)write_op)->set_alloc_hint(expected_object_size,
- expected_write_size,
- flags);
+ to_object_operation(write_op)->set_alloc_hint(expected_object_size,
+ expected_write_size,
+ flags);
tracepoint(librados, rados_write_op_set_alloc_hint2_exit);
}
LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_set_alloc_hint2);
{
tracepoint(librados, rados_write_op_operate_enter, write_op, io, oid, mtime, flags);
object_t obj(oid);
- ::ObjectOperation *oo = (::ObjectOperation *) write_op;
+ ::ObjectOperation *oo = to_object_operation(write_op);
librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
ceph::real_time *prt = NULL;
{
tracepoint(librados, rados_write_op_operate2_enter, write_op, io, oid, ts, flags);
object_t obj(oid);
- ::ObjectOperation *oo = (::ObjectOperation *) write_op;
+ ::ObjectOperation *oo = to_object_operation(write_op);
librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
ceph::real_time *prt = NULL;
{
tracepoint(librados, rados_aio_write_op_operate_enter, write_op, io, completion, oid, mtime, flags);
object_t obj(oid);
- ::ObjectOperation *oo = (::ObjectOperation *) write_op;
+ ::ObjectOperation *oo = to_object_operation(write_op);
librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
librados::AioCompletionImpl *c = (librados::AioCompletionImpl*)completion;
int retval = ctx->aio_operate(obj, oo, c, ctx->snapc, nullptr, translate_flags(flags));