Open ayase-mstk opened 4 months ago
vector<struct pollfd> eventList;
waitForEvent()
{
poll();
}
receiveEvent()
{
eventManager->recevieEvents()
{
for ( auto& it : vector<struct pollfd> )
{
eventList.pushback( it );
}
}
}
processEvent( vector<EventList> events )
{
for ( auto& event : events )
{
callHandler( EventManager->getHandlerToCall( event ) )
{
this->(func)();
}
}
}
func* getHandlerToCall()
{
if ( isReadEvetns ) // events.revents == pollin
return pollinHandler();
else if ( events.revents == isWriteEvetns ) // events.revents == pollout
return pollOutHandler();
else if ( TIMEOUT )
return timeoutHandler;
}
class EventManager
{
public:
// std::vector
static struct pollfd genPollFd( const int fd, const short events, const short revents );
static bool isInvalidFd( const struct pollfd& pfd );
};
class ConnectionData
{
public:
std::vector
// poll ( vector<struct pollfd>.data(), size(), -1);
int events;
};
/ コネクションの疎通したソケットとその直近のリクエストメッセージ情報を管理する /
class ConnectionManager
{
public:
void setConnection( const struct pollfd& pfd );
void removeConnection( const int fd );
void setRawRequest( const int fd, const std::vector
private:
std::map<int, class ConnectionData> connections_;
};
機能をほかのクラスに分ける