mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-03-12 05:25:23 -07:00
48 lines
975 B
C++
48 lines
975 B
C++
// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL
|
|
|
|
#ifndef CHIAKI_DISCOVERYMANAGER_H
|
|
#define CHIAKI_DISCOVERYMANAGER_H
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
#include <chiaki/discoveryservice.h>
|
|
#include <chiaki/log.h>
|
|
|
|
#include "host.h"
|
|
#include "settings.h"
|
|
|
|
static void Discovery(ChiakiDiscoveryHost *, void *);
|
|
|
|
class DiscoveryManager
|
|
{
|
|
private:
|
|
Settings * settings = nullptr;
|
|
ChiakiLog * log = nullptr;
|
|
ChiakiDiscoveryService service;
|
|
ChiakiDiscovery discovery;
|
|
struct sockaddr * host_addr = nullptr;
|
|
size_t host_addr_len = 0;
|
|
uint32_t GetIPv4BroadcastAddr();
|
|
bool service_enable = false;
|
|
|
|
public:
|
|
typedef enum hoststate
|
|
{
|
|
UNKNOWN,
|
|
READY,
|
|
STANDBY,
|
|
SHUTDOWN,
|
|
} HostState;
|
|
|
|
DiscoveryManager();
|
|
~DiscoveryManager();
|
|
void SetService(bool);
|
|
int Send();
|
|
int Send(struct sockaddr * host_addr, size_t host_addr_len);
|
|
int Send(const char *);
|
|
void DiscoveryCB(ChiakiDiscoveryHost *);
|
|
};
|
|
|
|
#endif //CHIAKI_DISCOVERYMANAGER_H
|