mirror of
https://github.com/ceph/ceph
synced 2025-01-20 01:51:34 +00:00
osdc/Objecter: move C_TwoContexts class to cc file
Signed-off-by: Michal Jarzabek <stiopa@gmail.com>
This commit is contained in:
parent
dc88e41062
commit
43af3432f5
@ -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)
|
||||
{
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user