]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
AsyncConnection: add EventCenter id
authorHaomai Wang <haomai@xsky.com>
Wed, 25 May 2016 01:42:14 +0000 (09:42 +0800)
committerHaomai Wang <haomai@xsky.com>
Wed, 29 Jun 2016 04:14:04 +0000 (12:14 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/msg/async/AsyncMessenger.cc
src/msg/async/Event.cc
src/msg/async/Event.h
src/test/msgr/test_async_driver.cc

index 8c4ff3a7f862cce6c7436265b581db7e347f09ee..1dcd00dcd3dfedd888528ada940c220edfc3e16a 100644 (file)
@@ -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
index eb67b0bd1c1c241a3dc6460b1e7dcad6cf1c95cc..9cd1bc051df85f2d0ad548aaa37a02f502002c19 100644 (file)
@@ -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
index a44f793fec837f0792990cc235aff7ca742d73da..353812e3d5decb638b2fdcf7a93e32d02b5270bd 100644 (file)
@@ -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);
index 589d5a6cc4450331840661d3b06d2f18811072a0..adcbb99160e8f2860e121d91a6bf7e15b3b2d23d 100644 (file)
@@ -255,7 +255,7 @@ class FakeEvent : public EventCallback {
 TEST(EventCenterTest, FileEventExpansion) {
   vector<int> 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;