本文整理汇总了C++中channel::get_io_descriptor方法的典型用法代码示例。如果您正苦于以下问题:C++ channel::get_io_descriptor方法的具体用法?C++ channel::get_io_descriptor怎么用?C++ channel::get_io_descriptor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类channel
的用法示例。
在下文中一共展示了channel::get_io_descriptor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: add_channel
void selector::add_channel(const channel & ch,
bool allow_outgoing_traffic, bool allow_incoming_traffic)
{
io_descriptor_type fd;
io_direction direction;
ch.get_io_descriptor(fd, direction);
if (fd > num_of_descriptors_to_test_ - 1)
{
num_of_descriptors_to_test_ = fd + 1;
}
if ((direction == input || direction == inout) && allow_incoming_traffic)
{
FD_SET(fd, &read_set_);
}
if ((direction == output || direction == inout) && allow_outgoing_traffic)
{
FD_SET(fd, &write_set_);
}
++num_of_channels_used_;
}
示例2: is_channel_ready
bool selector::is_channel_ready(
const channel & ch, io_direction & direction) const
{
io_descriptor_type fd;
io_direction dir;
ch.get_io_descriptor(fd, dir);
bool ready_for_reading = false;
bool ready_for_writing = false;
if (fd < num_of_descriptors_to_test_)
{
if (dir == input || dir == inout)
{
if (FD_ISSET(fd, &read_set_) != 0)
{
ready_for_reading = true;
}
}
if (dir == output || dir == inout)
{
if (FD_ISSET(fd, &write_set_) != 0)
{
ready_for_writing = true;
}
}
}
if (ready_for_reading && ready_for_writing)
{
direction = inout;
}
else if (ready_for_reading)
{
direction = input;
}
else if (ready_for_writing)
{
direction = output;
}
return ready_for_reading || ready_for_writing;
}