mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2025-06-23 09:18:26 -05:00
network, sockets: Replace POLL_IN
, POLL_OUT
, etc. constants with an enum class PollEvents
Actually, two enum classes, since for some reason there are two separate yet identical `PollFD` types used in the codebase. I get that one is ABI-compatible with the Switch while the other is an abstract type used for the host, but why not use `WSAPOLLFD` directly for the latter? Anyway, why make this change? Because on Apple platforms, `POLL_IN`, `POLL_OUT`, etc. (with an underscore) are defined as macros in <sys/signal.h>. (This is inherited from FreeBSD.) So defining a variable with the same name causes a compile error. I could just rename the variables, but while I was at it I thought I might as well switch to an enum for stronger typing. Also, change the type used for values copied directly to/from the `events` and `revents` fields of the host *native* `pollfd`/`WSASPOLLFD`, from `u32` to `short`, as `short` is the correct canonical type on both Unix and Windows.
This commit is contained in:
@ -61,18 +61,24 @@ struct SockAddrIn {
|
||||
};
|
||||
|
||||
/// Cross-platform poll fd structure
|
||||
struct PollFD {
|
||||
Socket* socket;
|
||||
u16 events;
|
||||
u16 revents;
|
||||
|
||||
enum class PollEvents : u16 {
|
||||
// Using Pascal case because IN is a macro on Windows.
|
||||
In = 1 << 0,
|
||||
Pri = 1 << 1,
|
||||
Out = 1 << 2,
|
||||
Err = 1 << 3,
|
||||
Hup = 1 << 4,
|
||||
Nval = 1 << 5,
|
||||
};
|
||||
|
||||
constexpr u16 POLL_IN = 1 << 0;
|
||||
constexpr u16 POLL_PRI = 1 << 1;
|
||||
constexpr u16 POLL_OUT = 1 << 2;
|
||||
constexpr u16 POLL_ERR = 1 << 3;
|
||||
constexpr u16 POLL_HUP = 1 << 4;
|
||||
constexpr u16 POLL_NVAL = 1 << 5;
|
||||
DECLARE_ENUM_FLAG_OPERATORS(PollEvents);
|
||||
|
||||
struct PollFD {
|
||||
Socket* socket;
|
||||
PollEvents events;
|
||||
PollEvents revents;
|
||||
};
|
||||
|
||||
class NetworkInstance {
|
||||
public:
|
||||
|
Reference in New Issue
Block a user