def _on_user_response(self, message): ''' Расссылает сообщение, что есть ответ клиенту. @param message: UserResponseMessage ''' logger.debug('sending client response message') new_message = messages.ClientResponseMessage(message.connection_id, message.packet) client_dispatcher.dispatch(new_message)
def _on_handler_close(self, handler_id): ''' Удаляет обработчик соединения с указанным идентификатором. @param id: int ''' logger.debug('removing handler #%s'%handler_id) message = messages.ClientDisconnectedMessage(handler_id) client_dispatcher.dispatch(message) del self._handlers[handler_id]
def _on_handler_message(self, handler_id, text): ''' Обрабатывает входящий пакет. @param handler_id: int @param text: string ''' logger.debug('parsing packet of length %s'%len(text)) packet = Converter.unserialize(text) if packet is not None: message = messages.ClientRequestMessage(handler_id, packet) client_dispatcher.dispatch(message)
def _on_handler_open(self, handler_id): ''' Проверяет количество текущих соединений. Если указанное соединение лишнее, закрывает его. @param handler_id: int ''' count = len(self._handlers.values()) max_count = settings.MAX_CONNECTION_COUNT if count > max_count: logger.debug('max connection count of %s exceeded, closing handler %s'%(max_count, handler_id)) packet = outcoming.ServerBusyPacket() message = messages.ClientResponseMessage(handler_id, packet) client_dispatcher.dispatch(message) handler = self._handlers[handler_id] handler.close()