Esempio n. 1
0
OPipe::OPipe(const OPipe &other, OThread *parent) : OIODevice() {
	fdes[0] = other.fdes[0];
	fdes[1] = other.fdes[1];
	
	//we only want to copy over the file descriptors
	par = parent;
	registerFd();
}
Esempio n. 2
0
bool SelectPoll::init()
{
    if(!notifier_.init()) {
        return false;
    }
    IOCallback cb ([this] (uint32_t ev) { notifier_.onEvent(ev); });
    registerFd(notifier_.getReadFD(), KUMA_EV_READ|KUMA_EV_ERROR, std::move(cb));
    return true;
}
Esempio n. 3
0
OPipe::OPipe(OThread *parent) : OIODevice() {
	//create the pipe
#ifdef __windows__
	CreatePipe(&fdes[0], &fdes[1], 0, 0);
#else
	::pipe(fdes);
#endif
	par = parent;
	
	registerFd();
}
Esempio n. 4
0
File: VPoll.cpp Progetto: Jamol/kuma
bool VPoll::init()
{
    if (!notifier_->ready()) {
        if (!notifier_->init()) {
            return false;
        }
        IOCallback cb([this](KMEvent ev, void*, size_t) { notifier_->onEvent(ev); });
        registerFd(notifier_->getReadFD(), KUMA_EV_READ | KUMA_EV_ERROR, std::move(cb));
    }
    return true;
}
Esempio n. 5
0
bool EPoll::init()
{
    epoll_fd_ = epoll_create(MAX_EPOLL_FDS);
    if(INVALID_FD == epoll_fd_) {
        return false;
    }
    if(!notifier_.init()) {
        return false;
    }
    IOCallback cb ([this](uint32_t ev) { notifier_.onEvent(ev); });
    registerFd(notifier_.getReadFD(), KUMA_EV_READ|KUMA_EV_ERROR, std::move(cb));
    return true;
}
Esempio n. 6
0
bool KQueue::init()
{
    kqueue_fd_ = ::kqueue();
    if(INVALID_FD == kqueue_fd_) {
        return false;
    }
    if (!notifier_->ready()) {
        if(!notifier_->init()) {
            return false;
        }
        IOCallback cb ([this](uint32_t ev) { notifier_->onEvent(ev); });
        registerFd(notifier_->getReadFD(), KUMA_EV_READ|KUMA_EV_ERROR, std::move(cb));
    }
    return true;
}
Esempio n. 7
0
void OPipe::parent(OThread *p) {
	unregisterFd();
	
	par = p;
	registerFd();
}