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)
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