61 {
62 auto rit = readers.find(channel);
63 if (rit != readers.end()) {
64 ADEBUG <<
"Adding client to existing " << channel;
65 rit->second.clients.insert(client);
66 return;
67 }
68
69 auto cb = [this, channel](const std::shared_ptr<const PyMessageWrap>& msg) {
70 ADEBUG <<
"New message on " << channel;
71
72 const std::string& data = msg->data();
73
74 std::lock_guard<std::mutex> lock(mutex);
75
76 auto it = readers.find(channel);
77 if (it != readers.end()) {
78 for (auto client : it->second.clients) {
79 client->publish(channel, data);
80 }
81 }
82 };
83
84 ADEBUG <<
"Adding new reader to " << channel;
85 Reader reader;
86 reader.reader = node->CreateReader<
PyMessageWrap>(channel, cb);
87 reader.clients.insert(client);
88
89 std::lock_guard<std::mutex> lock(mutex);
90 readers.insert(std::make_pair(channel, reader));
91}