mirror of https://github.com/ceph/go-ceph
32 lines
519 B
Go
32 lines
519 B
Go
|
package rados
|
||
|
|
||
|
// #include <stdint.h>
|
||
|
import "C"
|
||
|
|
||
|
import (
|
||
|
"unsafe"
|
||
|
)
|
||
|
|
||
|
type readStep struct {
|
||
|
withoutUpdate
|
||
|
withoutFree
|
||
|
// the c pointer utilizes the Go byteslice data and no free is needed
|
||
|
|
||
|
// inputs:
|
||
|
b []byte
|
||
|
|
||
|
// arguments:
|
||
|
cBuffer *C.char
|
||
|
cReadLen C.size_t
|
||
|
cOffset C.uint64_t
|
||
|
}
|
||
|
|
||
|
func newReadStep(b []byte, offset uint64) *readStep {
|
||
|
return &readStep{
|
||
|
b: b,
|
||
|
cBuffer: (*C.char)(unsafe.Pointer(&b[0])), // TODO: must be pinned
|
||
|
cReadLen: C.size_t(len(b)),
|
||
|
cOffset: C.uint64_t(offset),
|
||
|
}
|
||
|
}
|