osdc/Objecter: move C_TwoContexts class to cc file

Signed-off-by: Michal Jarzabek <stiopa@gmail.com>
This commit is contained in:
Michal Jarzabek 2016-05-21 15:46:18 +01:00
parent dc88e41062
commit 43af3432f5
2 changed files with 36 additions and 33 deletions

View File

@ -153,6 +153,40 @@ static const char *config_keys[] = {
NULL
};
/**
* This is a more limited form of C_Contexts, but that requires
* a ceph_context which we don't have here.
*/
class ObjectOperation::C_TwoContexts : public Context {
Context *first;
Context *second;
public:
C_TwoContexts(Context *first, Context *second) :
first(first), second(second) {}
void finish(int r) {
first->complete(r);
second->complete(r);
first = NULL;
second = NULL;
}
virtual ~C_TwoContexts() {
delete first;
delete second;
}
};
void ObjectOperation::add_handler(Context *extra) {
size_t last = out_handler.size() - 1;
Context *orig = out_handler[last];
if (orig) {
Context *wrapper = new C_TwoContexts(orig, extra);
out_handler[last] = wrapper;
} else {
out_handler[last] = extra;
}
}
Objecter::OSDSession::unique_completion_lock Objecter::OSDSession::get_lock(
object_t& oid)
{

View File

@ -86,43 +86,12 @@ struct ObjectOperation {
ops.rbegin()->op.flags = flags;
}
/**
* This is a more limited form of C_Contexts, but that requires
* a ceph_context which we don't have here.
*/
class C_TwoContexts : public Context {
Context *first;
Context *second;
public:
C_TwoContexts(Context *first, Context *second) : first(first),
second(second) {}
void finish(int r) {
first->complete(r);
second->complete(r);
first = NULL;
second = NULL;
}
virtual ~C_TwoContexts() {
delete first;
delete second;
}
};
class C_TwoContexts;
/**
* Add a callback to run when this operation completes,
* after any other callbacks for it.
*/
void add_handler(Context *extra) {
size_t last = out_handler.size() - 1;
Context *orig = out_handler[last];
if (orig) {
Context *wrapper = new C_TwoContexts(orig, extra);
out_handler[last] = wrapper;
} else {
out_handler[last] = extra;
}
}
void add_handler(Context *extra);
OSDOp& add_op(int op) {
int s = ops.size();