From 4dc2e1367bdc21fcd02526cd5a713f96cbd7a77c Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Wed, 25 May 2016 09:42:14 +0800 Subject: [PATCH] AsyncConnection: add EventCenter id Signed-off-by: Haomai Wang --- src/msg/async/AsyncMessenger.cc | 2 +- src/msg/async/Event.cc | 5 ++++- src/msg/async/Event.h | 4 +++- src/test/msgr/test_async_driver.cc | 8 ++++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 8c4ff3a7f862c..1dcd00dcd3dfe 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -64,7 +64,7 @@ class Worker : public Thread { std::atomic_uint references; Worker(CephContext *c, WorkerPool *p, int i) : cct(c), pool(p), done(false), id(i), perf_logger(NULL), center(c), references(0) { - center.init(InitEventNumber); + center.init(InitEventNumber, i); char name[128]; sprintf(name, "AsyncMessenger::Worker-%d", id); // initialize perf_logger diff --git a/src/msg/async/Event.cc b/src/msg/async/Event.cc index eb67b0bd1c1c2..9cd1bc051df85 100644 --- a/src/msg/async/Event.cc +++ b/src/msg/async/Event.cc @@ -61,10 +61,13 @@ ostream& EventCenter::_event_prefix(std::ostream *_dout) thread_local EventCenter* local_center = nullptr; -int EventCenter::init(int n) +int EventCenter::init(int n, unsigned i) { // can't init multi times assert(nevent == 0); + + id = i; + #ifdef HAVE_EPOLL driver = new EpollDriver(cct); #else diff --git a/src/msg/async/Event.h b/src/msg/async/Event.h index a44f793fec837..353812e3d5dec 100644 --- a/src/msg/async/Event.h +++ b/src/msg/async/Event.h @@ -120,6 +120,7 @@ class EventCenter { int notify_send_fd; NetHandler net; EventCallbackRef notify_handler; + unsigned id = 10000; int process_time_events(); FileEvent *_get_file_event(int fd) { @@ -141,8 +142,9 @@ class EventCenter { ~EventCenter(); ostream& _event_prefix(std::ostream *_dout); - int init(int nevent); + int init(int nevent, unsigned id); void set_owner(); + unsigned get_id() { return id; } // Used by internal thread int create_file_event(int fd, int mask, EventCallbackRef ctxt); diff --git a/src/test/msgr/test_async_driver.cc b/src/test/msgr/test_async_driver.cc index 589d5a6cc4450..adcbb99160e8f 100644 --- a/src/test/msgr/test_async_driver.cc +++ b/src/test/msgr/test_async_driver.cc @@ -255,7 +255,7 @@ class FakeEvent : public EventCallback { TEST(EventCenterTest, FileEventExpansion) { vector sds; EventCenter center(g_ceph_context); - center.init(100); + center.init(100, 0); EventCallbackRef e(new FakeEvent()); for (int i = 0; i < 300; i++) { int sd = ::socket(AF_INET, SOCK_STREAM, 0); @@ -274,8 +274,8 @@ class Worker : public Thread { public: EventCenter center; - explicit Worker(CephContext *c): cct(c), done(false), center(c) { - center.init(100); + explicit Worker(CephContext *c, int idx): cct(c), done(false), center(c) { + center.init(100, idx); } void stop() { done = true; @@ -305,7 +305,7 @@ class CountEvent: public EventCallback { }; TEST(EventCenterTest, DispatchTest) { - Worker worker1(g_ceph_context), worker2(g_ceph_context); + Worker worker1(g_ceph_context, 0), worker2(g_ceph_context, 1); atomic_t count(0); Mutex lock("DispatchTest::lock"); Cond cond; -- 2.39.5