Equity
Bitcoin Protocol Library
Address.h
1 #pragma once
2 
3 #include "p2p/Serialize.h"
4 #include <array>
5 #include <cstdint>
6 
7 namespace Network
8 {
9 
13 
14 class Address : public P2p::Serializable
15 {
16 public:
17  // Constructor
18  Address();
19 
20  // Constructor
26  Address(uint32_t time, uint64_t services, std::array<uint8_t, 16> const & ipv6, uint16_t port);
27 
28  // Deserialization constructor
32  Address(uint8_t const * & in, size_t & size);
33 
36  virtual void serialize(std::vector<uint8_t> & out) const override;
37  virtual json toJson() const override;
38 
40 
42  uint32_t time() const { return time_; }
43 
45  uint64_t services() const { return services_; }
46 
48  uint8_t const * ipv6() const { return ipv6_.data(); }
49 
51  uint8_t const * ipv4() const { return ipv6_.data() + 12; }
52 
54  int port() const { return port_; }
55 
56 private:
57 
58  uint32_t time_;
59  uint64_t services_;
60  std::array<uint8_t, 16> ipv6_;
61  uint16_t port_;
62 };
63 
64 } // namespace Network
An abstract class that enables an object to be serialized by the serialization functions.
Definition: Serialize.h:27
uint8_t const * ipv4() const
Returns the IP address in IPV4 form.
Definition: Address.h:51
uint32_t time() const
Returns the timestamp.
Definition: Address.h:42
A description of a network node.
Definition: Address.h:14
uint64_t services() const
Returns the services.
Definition: Address.h:45
uint8_t const * ipv6() const
Returns the IP address in IPV6 form.
Definition: Address.h:48
int port() const
Returns the port.
Definition: Address.h:54
Bitcoin Network Layer.
Definition: Address.h:7