VTrain/tools/rtsp_server/net/EpollTaskScheduler.h

36 lines
598 B
C++

// PHZ
// 2018-5-15
#ifndef XOP_EPOLL_TASK_SCHEDULER_H
#define XOP_EPOLL_TASK_SCHEDULER_H
#include "TaskScheduler.h"
#include <mutex>
#include <unordered_map>
namespace xop
{
class EpollTaskScheduler : public TaskScheduler
{
public:
EpollTaskScheduler(int id = 0);
virtual ~EpollTaskScheduler();
void UpdateChannel(ChannelPtr channel);
void RemoveChannel(ChannelPtr& channel);
// timeout: ms
bool HandleEvent(int timeout);
private:
void Update(int operation, ChannelPtr& channel);
int epollfd_ = -1;
std::mutex mutex_;
std::unordered_map<int, ChannelPtr> channels_;
};
}
#endif