コード例 #1
0
ファイル: ZyfPoller.py プロジェクト: ajue/llgame
    def onRecv(self, fileno):

        if self._socket.fileno() == fileno:

            sock, addr = self._socket.accept()
            self._clients[sock.fileno()] = (sock, addr)
            KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)

            DEBUG_MSG("BEGIN Poller::onRecv: new channel[%s/%i]" %
                      (addr, sock.fileno()))

        else:
            sock, addr = self._clients.get(fileno, None)
            if sock is None:
                return

            data = sock.recv(2048)

            DEBUG_MSG("BEGIN Poller::onRecv: %s/%i data size=%i" %
                      (addr, sock.fileno(), len(data)))

            self.processData(sock, addr, data)
            KBEngine.deregisterReadFileDescriptor(sock.fileno())
            sock.close()

            del self._clients[fileno]
コード例 #2
0
ファイル: PayPoller.py プロジェクト: ruifly2012/LLD7
    def onRecv(self, fileno):
        if self._socket.fileno() == fileno:
            sock, addr = self._socket.accept()
            self._clients[sock.fileno()] = (sock, addr)
            KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)
            DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" %
                      (addr, sock.fileno()))
        else:
            sock, addr = self._clients.get(fileno, None)
            if sock is None:
                return
            if addr[0] not in ('localhost', '127.0.0.1'):
                return

            data = sock.recv(2048)
            DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" %
                      (addr, sock.fileno(), len(data)))
            DEBUG_MSG("Poller::onRecv: data = {}".format(data))
            try:
                data = data.decode()
                data = str(data).split('\r\n')
                content = json.loads(data[-1])
                self.processData(content)
            except:
                import traceback
                ERROR_MSG(traceback.format_exc())
            finally:
                KBEngine.deregisterReadFileDescriptor(sock.fileno())
                sock.close()
                del self._clients[fileno]
コード例 #3
0
 def stop(self):
     if self._socket:
         INFO_MSG("httpserver stop host[%s], port[%s]" %
                  (self._host, self._port))
         KBEngine.deregisterReadFileDescriptor(self._fd)
         self._socket.close()
         self._socket = None
         self.app = None
コード例 #4
0
 def onRecv(self, fileno):
     if self._sock.fileno() == fileno:
         self.delTimer(self._write_dt)
         try:
             INFO_MSG('---------------------------onRecv:%s' % self._reqs_curt[0])
             resp = HTTPResponse(self._sock)
             if self._reqs_curt and self._reqs_curt[2]:
                 resp.begin()
                 self._reqs_curt[2](resp)
         except:
             # 出错重新加载
             self._reqs.append(self._reqs_curt)
             self.logsError()
         finally:
             KBEngine.deregisterReadFileDescriptor(self._sock.fileno())
             self.cleanSocketStatus()
コード例 #5
0
	def onRecv(self, fileno):
		if self._socket.fileno() == fileno:
			sock, addr = self._socket.accept()
			self._clients[sock.fileno()] = (sock, addr)
			KBEngine.registerReadFileDescriptor(sock.fileno(), self.onRecv)
			DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" % (addr, sock.fileno()))
		else:
			sock, addr = self._clients.get(fileno, None)
			if sock is None:
				return
			
			data = sock.recv(2048)
			DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" % (addr, sock.fileno(), len(data)))
			self.processData(sock, data)
			KBEngine.deregisterReadFileDescriptor(sock.fileno())
			sock.close()
			del self._clients[fileno]
コード例 #6
0
 def on_receive(self, sock, address, fileno):
     KBEngine.deregisterReadFileDescriptor(fileno)
     try:
         req = HTTPRequest(sock, address)
         if req.is_bad:
             return
         resp = HTTPResponse(sock)
         if req.has_error:
             resp.send_error(req.error_code)
         else:
             handler = self._handlers.get(req.path)
             if not handler:
                 handler = handler_404
             response = handler(req)
             response.adapt(resp)
             resp.flush()
     finally:
         sock.close()
コード例 #7
0
    def onRecv(self, sock, addr, fileno):
        KBEngine.deregisterReadFileDescriptor(sock.fileno())
        try:
            req, resp = HTTPRequest(sock), HTTPResponse(sock)
            for k, v in self._handler.items():
                if req.url.startswith(k):
                    for func in v:
                        try:
                            func(req, resp)
                        except:
                            pass
                        finally:
                            if resp.complete():
                                return
            if self._resPath:
                self.onRespStaticRes(req, resp)

        except:
            sock.close()
コード例 #8
0
 def on_receive(self, sock, address, fileno):
     KBEngine.deregisterReadFileDescriptor(fileno)
     need_close = True
     try:
         req = HTTPRequest(sock, address)
         if req.is_bad:
             return
         resp = HTTPResponse(sock)
         if req.has_error:
             resp.send_error(req.error_code)
         else:
             need_close = False
             handler = self._handlers.get(req.path)
             if not handler:
                 handler = async_handler_404
             handler(Promise(sock, req, resp))
     finally:
         if need_close:
             sock.close()
コード例 #9
0
ファイル: AsyncRequest.py プロジェクト: shacleff/DouPai
 def onRecv(self, task, sock, file_no):
     if sock.fileno() == file_no:
         t_id = self._write_timer.pop(file_no, None)
         if t_id:
             self.cancel_timer(t_id)
         try:
             # INFO_MSG('------------- onRecv ------------ {} {}'.format(task[0], task[2]))
             resp = HTTPResponse(sock)
             if task and task[2]:
                 resp.begin()
                 if resp.getcode() / 100 == 2:
                     decode = resp.read().decode('utf-8')
                     task[2](decode)
                 else:
                     task[2](None)
         except:
             self.logsError()
         finally:
             KBEngine.deregisterReadFileDescriptor(file_no)
             if not sock._closed:
                 sock.close()
コード例 #10
0
ファイル: Poller.py プロジェクト: beyondray/PVPServer
 def stop(self):
     if self._socket:
         KBEngine.deregisterReadFileDescriptor(self._socket.fileno())
         self._socket.close()
         self._socket = None
コード例 #11
0
ファイル: Poller.py プロジェクト: BombShen/kbengine
	def stop(self):
		if self._socket:
			KBEngine.deregisterReadFileDescriptor(self._socket.fileno())
			self._socket.close()
			self._socket = None
コード例 #12
0
 def deregisterRead(self):
     if self._registerRead == True:
         KBEngine.deregisterReadFileDescriptor(self._socket.fileno())
         self._registerRead = False
コード例 #13
0
 def close(self):
     KBEngine.deregisterReadFileDescriptor(self._fd)
     self._sock.close()
     self._fd = 0
     self._sock = None
     self.cleanup()