- ValueLatch<FileDescriptor> peerFDLatch;
- IPCGSource::Pointer ipcGSourcePtr = IPCGSource::create(s.getFDs(), std::bind(&Service::handle, &s, _1, _2));
-
- auto newPeerCallback = [&peerFDLatch, ipcGSourcePtr](const FileDescriptor newFD) {
- if (ipcGSourcePtr) {
- //TODO: Remove this if
- ipcGSourcePtr->addFD(newFD);
- }
- peerFDLatch.set(newFD);
- };
-
-
- s.setNewPeerCallback(newPeerCallback);
- s.setRemovedPeerCallback(std::bind(&IPCGSource::removeFD, ipcGSourcePtr, _1));
- s.start(true);
- // Service starts to process
- ipcGSourcePtr->attach();
-
- c.start();
-
- FileDescriptor peerFD = peerFDLatch.get(TIMEOUT);
- s.setNewPeerCallback(nullptr);
- BOOST_REQUIRE_NE(peerFD, 0);
- return std::make_pair(peerFD, ipcGSourcePtr);
+ return connect(s, c, true, false);