Пример #1
0
ostream& operator<<(ostream& os, const Peer& p) {
    /// when NTP implemented, change to just nTime = GetAdjustedTime()
    int64_t nTime = (p._inbound ? GetAdjustedTime() : UnixTime::s());
    //    Endpoint remote = _socket.remote_endpoint();
    Endpoint local = p._socket.local_endpoint();
    Endpoint addrYou = (p._proxy ? Endpoint("0.0.0.0") : p.addr);
    Endpoint addrMe = (p._proxy ? Endpoint("0.0.0.0") : local);
    // hack to avoid serializing the time
    if (p._version)
        os << const_binary<int>(p._version);
    else // not initialized - we assume we are sending the version info
        os << const_binary<int>(p._chain.protocol_version());
    os << const_binary<uint64_t>(NODE_NETWORK) << const_binary<int64_t>(nTime);
    os << const_binary<uint64_t>(addrYou.getServices()) << const_binary<boost::asio::ip::address_v6::bytes_type>(addrYou.getIPv6()) << const_binary<unsigned short>(htons(addrYou.port()));
    os << const_binary<uint64_t>(addrMe.getServices()) << const_binary<boost::asio::ip::address_v6::bytes_type>(addrMe.getIPv6()) << const_binary<unsigned short>(htons(addrMe.port()));
    os << const_binary<uint64_t>(p._nonce) << const_varstr(p._sub_version);
    os << const_binary<int>(p._peerManager.getBestHeight());
    os << const_binary<bool>(true);
    return os;
}