1f2895a469
* Fix #323: Missing SelectInterrupt implementation for Windows Using WSAEventSelect, WSAWaitForMultipleEvents and WSAEnumNetworkEvents to emulate poll() with an interrupt-event. * Cleanup * Fixed incomplete comment. * Switched ifdefs to support other Unixes with pipe file descriptors * Fixed: SelectInterrupt fallback code for getFd()==-1 && getEvent()==nullptr converted a PollResultType::Timeout into a ReadyForRead causing the HttpClient to fail because it uses a hard-coded "SelectInterrupt" instance that doesn't implement getFd() and getEvent(). * Fixed gcc compile errors * - HttpClient now uses the SelectInterruptFactory - Fixed wrong ix::poll result when using Windows WSA functions * We must deselect the networkevents from the socket event. Otherwise the socket will report states that aren't there.
54 lines
893 B
C++
54 lines
893 B
C++
/*
|
|
* IXSelectInterrupt.cpp
|
|
* Author: Benjamin Sergeant
|
|
* Copyright (c) 2019 Machine Zone, Inc. All rights reserved.
|
|
*/
|
|
|
|
#include "IXSelectInterrupt.h"
|
|
|
|
namespace ix
|
|
{
|
|
const uint64_t SelectInterrupt::kSendRequest = 1;
|
|
const uint64_t SelectInterrupt::kCloseRequest = 2;
|
|
|
|
SelectInterrupt::SelectInterrupt()
|
|
{
|
|
;
|
|
}
|
|
|
|
SelectInterrupt::~SelectInterrupt()
|
|
{
|
|
;
|
|
}
|
|
|
|
bool SelectInterrupt::init(std::string& /*errorMsg*/)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool SelectInterrupt::notify(uint64_t /*value*/)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
uint64_t SelectInterrupt::read()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
bool SelectInterrupt::clear()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
int SelectInterrupt::getFd() const
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
void* SelectInterrupt::getEvent() const
|
|
{
|
|
return nullptr;
|
|
}
|
|
} // namespace ix
|