Esempio n. 1
0
	def add(cls, some_user):
		"""
		Adds the User class object to poll
		"""
		if DEBUG_POLL:
			logger.debug("longpoll: adding user to poll (jid: %s)", some_user.source)
		with cls.__lock:
			if some_user in cls.__buff:
				return None
			for sock, (user, opener) in cls.__list.iteritems():
				if some_user == user:
					break
			else:
				try:
					cls.__add(some_user)
				except Exception as e:
					if not isinstance(e, api.LongPollError):
						crashLog("poll.add")
					logger.error("longpoll: failed to make poll (jid: %s)", some_user.source)
					cls.__addToBuff(some_user)
Esempio n. 2
0
	def __add(cls, user):
		"""
		Issues readable socket to use it in select()
		Adds user in buffer on error occurred
		Adds user in self.__list if no errors
		"""
		if DEBUG_POLL:
			logger.debug("longpoll: really adding user to poll (jid: %s)", user.source)
		try:
			opener = user.vk.makePoll()
		except Exception as e:
			if not isinstance(e, api.LongPollError):
				crashLog("poll.add")
			logger.error("longpoll: failed to make poll (jid: %s)", user.source)
			cls.__addToBuff(user)
			return False
		else:
			if DEBUG_POLL:
				logger.debug("longpoll: user has been added to poll (jid: %s)", user.source)
			cls.__list[opener.sock] = (user, opener)
		return opener