netpycos.py 文件源码

python
阅读 70 收藏 0 点赞 0 评论 0

项目:pycos 作者: pgiri 项目源码 文件源码
def _acquaint_(self, peer_location, peer_signature, addrinfo, task=None):
        """
        Internal use only.
        """
        if peer_signature in _Peer._sign_locations:
            raise StopIteration
        sock = AsyncSocket(socket.socket(addrinfo.family, socket.SOCK_STREAM),
                           keyfile=self._keyfile, certfile=self._certfile)
        sock.settimeout(MsgTimeout)
        req = _NetRequest('peer', kwargs={'signature': self._signature, 'name': self._name,
                                          'from': addrinfo.location, 'version': __version__},
                          dst=peer_location)
        req.auth = hashlib.sha1((peer_signature + self._secret).encode()).hexdigest()
        try:
            yield sock.connect((peer_location.addr, peer_location.port))
            yield sock.send_msg(serialize(req))
            peer_info = yield sock.recv_msg()
            peer_info = deserialize(peer_info)
            assert peer_info['version'] == __version__
            if peer_signature not in _Peer._sign_locations:
                _Peer(peer_info['name'], peer_location, peer_signature,
                      self._keyfile, self._certfile, addrinfo)
            reply = 0
        except:
            logger.debug(traceback.format_exc())
            reply = -1
        sock.close()
        raise StopIteration(0)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号