virtual bool Run() { // This runs in worker threads. // I can access my own context without lock. size_t my_context = g_context[_id]; // Now to deal with TimeoutPool. LOG(DEBUG) << "FIND " << _reqid << " FROM " << _id; Request *request = g_timeout[_id]->Erase(_reqid); if (!request) { LOG(WARN) << "Job: unknown request id: " << _reqid; return true; } LOG(INFO) << "Handler: I'm (" << my_context << ") OnMessage(" << _channel << ", " << _length << ")"; request->Done(); delete request; return true; }