cls->unregister_method(this);
}
-int ClassHandler::ClassMethod::exec(bufferlist& indata, bufferlist& outdata)
+int ClassHandler::ClassMethod::exec(cls_method_context_t ctx, bufferlist& indata, bufferlist& outdata)
{
char *out = NULL;
int olen;
int ret;
- cls_method_context_t ctx = 0;
ret = func(ctx, indata.c_str(), indata.length(), &out, &olen);
if (out)
outdata.append(out, olen);
struct ClassHandler::ClassData *cls;
string name;
cls_method_call_t func;
- int exec(bufferlist& indata, bufferlist& outdata);
+ int exec(cls_method_context_t ctx, bufferlist& indata, bufferlist& outdata);
void unregister();
};
result = -EINVAL;
} else {
dout(10) << "rdcall method " << cname << "." << mname << dendl;
- result = method->exec(indata, outdata);
+ result = method->exec((cls_method_context_t)&ctx, indata, outdata);
p->length = outdata.length();
data.claim_append(outdata);
}