M2-PT-DRP/source/Context.hpp

28 lines
1 KiB
C++

#pragma once
#include <list>
#include <memory>
#include <netdb.h>
#include "RemotePeer.hpp"
/**
* Information about the current state of our machine.
* Used everywhere to determinate how to behave.
* Information contained here may be private, contrary to the "me" attribute holding public data that can be shared.
*/
class Context {
public:
explicit Context(const std::array<std::uint8_t, 2048>& privateKey, const std::array<std::uint8_t, 2048>& publicKey);
int socket; /// current socket file descriptor, used to communicate
addrinfo* broadcastAddressInfo; /// address used to broadcast messages
std::shared_ptr<RemotePeer> server; /// peer currently used as the server
Peer me; /// information about our own machine
std::list<std::shared_ptr<RemotePeer>> remotePeers {}; /// information about other machines
std::chrono::high_resolution_clock::time_point latestPeerDiscovery; /// time of the latest discovered machine
std::array<std::uint8_t, 2048> cryptoRsaPrivateKey {}; /// the RSA private key
};