def _decode_similarity_destination(self, meta_message, authentication_impl): if __debug__: from authentication import Authentication assert isinstance(meta_message, Message) assert isinstance(authentication_impl, Authentication.Implementation) try: my_similarity, = self._dispersy_database.execute(u"SELECT similarity FROM similarity WHERE community = ? AND user = ? AND cluster = ?", (self._community.database_id, self._community._my_member.database_id, meta_message.destination.cluster)).next() except StopIteration: raise DropPacket("We don't know our own similarity... should not happen") my_similarity = BloomFilter(str(my_similarity), 0) try: sender_similarity, = self._dispersy_database.execute(u"SELECT similarity FROM similarity WHERE community = ? AND user = ? AND cluster = ?", (self._community.database_id, authentication_impl.member.database_id, meta_message.destination.cluster)).next() except StopIteration: raise DelayPacketBySimilarity(self._community, authentication_impl.member, meta_message.destination) sender_similarity = BloomFilter(str(sender_similarity), 0) return meta_message.destination.implement(my_similarity.bic_occurrence(sender_similarity))