}
protected:
- virtual void _process(const list<T*> &) { assert(0); }
- virtual void _process(const list<T*> &items, TPHandle &handle) {
- _process(items);
- }
+ virtual void _process(const list<T*> &items, TPHandle &handle) = 0;
public:
BatchWorkQueue(string n, time_t ti, time_t sti, ThreadPool* p)
void unlock() {
pool->unlock();
}
- virtual void _process(U) { assert(0); }
- virtual void _process(U u, TPHandle &) {
- _process(u);
- }
+ virtual void _process(U u, TPHandle &) = 0;
};
/** @brief Template by-pointer work queue.
protected:
/// Process a work item. Called from the worker threads.
- virtual void _process(T *t) { assert(0); }
- virtual void _process(T *t, TPHandle &) {
- _process(t);
- }
+ virtual void _process(T *t, TPHandle &) = 0;
public:
WorkQueue(string n, time_t ti, time_t sti, ThreadPool* p) : WorkQueue_(n, ti, sti), pool(p) {
_queue.pop_front();
return c;
}
- using ThreadPool::WorkQueueVal<GenContext<ThreadPool::TPHandle&>*>::_process;
- void _process(GenContext<ThreadPool::TPHandle&> *c, ThreadPool::TPHandle &tp) {
+ void _process(GenContext<ThreadPool::TPHandle&> *c,
+ ThreadPool::TPHandle &tp) override {
c->complete(tp);
}
};
}
return item;
}
- void _process(Job *item, ThreadPool::TPHandle &handle) {
+ void _process(Job *item, ThreadPool::TPHandle &) override {
assert(item->status.read() == WORKING);
bufferlist out;
int r;
i->osr->wal_apply_lock.Lock();
return i;
}
- void _process(TransContext *i, ThreadPool::TPHandle &handle) {
+ void _process(TransContext *i, ThreadPool::TPHandle &) override {
store->_wal_apply(i);
i->osr->wal_apply_lock.Unlock();
}
- using ThreadPool::WorkQueue<TransContext>::_process;
void _clear() {
assert(wal_queue.empty());
}
store->op_queue.pop_front();
return osr;
}
- void _process(OpSequencer *osr, ThreadPool::TPHandle &handle) {
+ void _process(OpSequencer *osr, ThreadPool::TPHandle &handle) override {
store->_do_op(osr, handle);
}
- using ThreadPool::WorkQueue<OpSequencer>::_process;
void _process_finish(OpSequencer *osr) {
store->_finish_op(osr);
}
void _dequeue(list<PG*> *out);
void _process(
const list<PG *> &pgs,
- ThreadPool::TPHandle &handle) {
+ ThreadPool::TPHandle &handle) override {
osd->process_peering_events(pgs, handle);
for (list<PG *>::const_iterator i = pgs.begin();
i != pgs.end();
(*i)->put("PeeringWQ");
}
}
- using ThreadPool::BatchWorkQueue<PG>::_process;
void _process_finish(const list<PG *> &pgs) {
for (list<PG*>::const_iterator i = pgs.begin();
i != pgs.end();
osd->command_queue.pop_front();
return c;
}
- void _process(Command *c) {
+ void _process(Command *c, ThreadPool::TPHandle &) override {
osd->osd_lock.Lock();
if (osd->is_stopping()) {
osd->osd_lock.Unlock();
osd->osd_lock.Unlock();
delete c;
}
- void _process(Command *c, ThreadPool::TPHandle &tp) {
- _process(c);
- }
void _clear() {
while (!osd->command_queue.empty()) {
Command *c = osd->command_queue.front();
osd->recovery_queue.push_front(&pg->recovery_item);
}
}
- void _process(PG *pg, ThreadPool::TPHandle &handle) {
+ void _process(PG *pg, ThreadPool::TPHandle &handle) override {
osd->do_recovery(pg, handle);
pg->put("RecoveryWQ");
}
- using ThreadPool::WorkQueue<PG>::_process;
void _clear() {
while (!osd->recovery_queue.empty()) {
PG *pg = osd->recovery_queue.front();
remove_queue.pop_front();
return item;
}
- using ThreadPool::WorkQueueVal<pair<PGRef, DeletingStateRef> >::_process;
- void _process(pair<PGRef, DeletingStateRef>, ThreadPool::TPHandle &);
+ void _process(pair<PGRef, DeletingStateRef>,
+ ThreadPool::TPHandle &) override;
void _clear() {
remove_queue.clear();
}
perfcounter->inc(l_rgw_qlen, -1);
return req;
}
- using ThreadPool::WorkQueue<RGWRequest>::_process;
- void _process(RGWRequest *req) {
+ void _process(RGWRequest *req, ThreadPool::TPHandle &) override {
perfcounter->inc(l_rgw_qactive);
process->handle_request(req);
process->req_throttle.put(1);
bool _empty() {
return item_queue.empty();
}
- using ThreadPool::WorkQueue<write_item>::_process;
- void _process(write_item *item) {
+ void _process(write_item *item, ThreadPool::TPHandle &) override {
return backend->_write(
item->oid,
item->offset,
q.pop_front();
return val;
}
- using ThreadPool::WorkQueue<unsigned>::_process;
- void _process(unsigned *item) {
+ void _process(unsigned *item, ThreadPool::TPHandle &) override {
next->queue(item);
}
void _clear() { q.clear(); }
messages.pop_front();
return m;
}
- using ThreadPool::WorkQueue<Message>::_process;
- void _process(Message *m, ThreadPool::TPHandle &handle) {
+ void _process(Message *m, ThreadPool::TPHandle &handle) override {
MOSDOp *osd_op = static_cast<MOSDOp*>(m);
MOSDOpReply *reply = new MOSDOpReply(osd_op, 0, 0, 0, false);
m->get_connection()->send_message(reply);