rados: use rados_read_op_omap_get_vals_by_keys2()

ReadOp.GetOmapValuesByKeys() now uses rados_read_op_omap_get_vals_by_keys2().
This commit is contained in:
Robert Vasek 2022-02-10 20:17:43 +01:00 committed by mergify[bot]
parent ecdb224b75
commit 8371a1377d
2 changed files with 14 additions and 18 deletions

View File

@ -983,7 +983,7 @@
},
{
"name": "ReadOp.GetOmapValuesByKeys",
"comment": "GetOmapValuesByKeys starts iterating over specific key/value pairs.\n PREVIEW\n\nImplements:\n void rados_read_op_omap_get_vals_by_keys(rados_read_op_t read_op,\n char const * const * keys,\n size_t keys_len,\n rados_omap_iter_t * iter,\n int * prval)\n",
"comment": "GetOmapValuesByKeys starts iterating over specific key/value pairs.\n PREVIEW\n\nImplements:\n void rados_read_op_omap_get_vals_by_keys2(rados_read_op_t read_op,\n char const * const * keys,\n size_t num_keys,\n const size_t * key_lens,\n rados_omap_iter_t * iter,\n int * prval)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},

View File

@ -11,6 +11,8 @@ import "C"
import (
"unsafe"
"github.com/ceph/go-ceph/internal/cutil"
)
// ReadOpOmapGetValsByKeysStep holds the result of the
@ -89,30 +91,24 @@ func (s *ReadOpOmapGetValsByKeysStep) Next() (*OmapKeyValue, error) {
// PREVIEW
//
// Implements:
// void rados_read_op_omap_get_vals_by_keys(rados_read_op_t read_op,
// char const * const * keys,
// size_t keys_len,
// rados_omap_iter_t * iter,
// int * prval)
// void rados_read_op_omap_get_vals_by_keys2(rados_read_op_t read_op,
// char const * const * keys,
// size_t num_keys,
// const size_t * key_lens,
// rados_omap_iter_t * iter,
// int * prval)
func (r *ReadOp) GetOmapValuesByKeys(keys []string) *ReadOpOmapGetValsByKeysStep {
s := newReadOpOmapGetValsByKeysStep()
r.steps = append(r.steps, s)
cKeys := make([]*C.char, len(keys))
defer func() {
for _, cKeyPtr := range cKeys {
C.free(unsafe.Pointer(cKeyPtr))
}
}()
cKeys := cutil.NewBufferGroupStrings(keys)
defer cKeys.Free()
for i, key := range keys {
cKeys[i] = C.CString(key)
}
C.rados_read_op_omap_get_vals_by_keys(
C.rados_read_op_omap_get_vals_by_keys2(
r.op,
&cKeys[0],
(**C.char)(cKeys.BuffersPtr()),
C.size_t(len(keys)),
(*C.size_t)(cKeys.LengthsPtr()),
&s.iter,
s.prval,
)