本文整理汇总了C++中Timestamp::sec方法的典型用法代码示例。如果您正苦于以下问题:C++ Timestamp::sec方法的具体用法?C++ Timestamp::sec怎么用?C++ Timestamp::sec使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Timestamp
的用法示例。
在下文中一共展示了Timestamp::sec方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loop_once
void PollerSelect::loop_once(Timestamp *ts) {
runNextLoopHandlers();
struct timeval timeout;
struct timeval *pto = nullptr;
if (ts != nullptr) {
Timestamp now = Timestamp::now();
if (*ts < now) {
timeout = {0, 0};
} else {
Timestamp inter = *ts - now;
timeout = {.tv_sec = inter.sec(), .tv_usec = inter.usec()};
}
pto = &timeout;
}
fd_set rset = rset_;
fd_set wset = wset_;
fd_set eset = eset_;
int nready = ::select(maxfd_, &rset, &wset, &eset, pto);
errorif(nready == -1, "select: %s", ::strerror(errno));
for (int fd = 0; fd < maxfd_ && nready > 0; fd++) {
DeferCaller deferCaller([this] { runNextTickHandlers(); });
Channel *ch = getChannel(fd);
if (ch == nullptr)
continue;
bool flag = false;
if (FD_ISSET(fd, &eset)) {
flag = true;
ch->handleErroEvent();
continue;
}
if (FD_ISSET(fd, &rset)) {
flag = true;
ch->handleReadEvent();
}
if (FD_ISSET(fd, &wset) && (ch = getChannel(fd)) != nullptr) {
flag = true;
ch->handleWritEvent();
}
if (flag == true) {
nready--;
}
}
runAfterLoopHandlers();
}