HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/qcloud/monitor/barad/comm/epoll/event_handler.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

class EventHandler(object):
    def __init__(self, reactor, sock, event):
        self.__recv_buffer = ''
        self.__send_buffer = ''
        self.__fd = sock.fileno()
        self.__sock = sock
        self.__reactor = reactor
        self.__mask = 0
        reactor.attach(self.__fd, self, event)
    
    def close_sock(self):
        self.__sock.close()
        
    def fd(self):
        return self.__fd

    def reactor(self):
        return self.__reactor
        
    def handle_input(self):
        return 0
    
    def handle_output(self):
        return 0
    
    def handle_error(self):
        self.__reactor.put_del_list(self)
        return -1
    
    def handle_hangup(self):
        self.__reactor.put_del_list(self)
        return -1
    
    def enable_input(self):
        self.enable_event(select.EPOLLIN)
    
    def enable_output(self):
        self.enable_event(select.EPOLLOUT)
    
    def disable_input(self):
        self.disable_event(select.EPOLLIN)    
    
    def disable_output(self):
        self.disable_event(select.EPOLLOUT)
    
    def enable_event(self, event):
        if self.__mask & event == 0:
            self.__mask |= event
            self.__reactor.modify(self.__fd, self.__mask)
    
    def disable_event(self, event):
        if self.__mask & event != 0:
            self.__mask &= ~event
            self.__reactor.modify(self.__fd, self.__mask)