mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-19 21:13:12 -07:00
Some Discovery Service Renaming
This commit is contained in:
parent
1ad1cf3db8
commit
2fd2f0d733
3 changed files with 17 additions and 13 deletions
|
@ -21,7 +21,7 @@ DiscoveryManager::DiscoveryManager(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
ChiakiDiscoveryServiceOptions options;
|
ChiakiDiscoveryServiceOptions options;
|
||||||
options.ping_ms = 500;
|
options.ping_ms = 500;
|
||||||
options.servers_max = 16;
|
options.hosts_max = 16;
|
||||||
|
|
||||||
options.send_addr = nullptr; // TODO
|
options.send_addr = nullptr; // TODO
|
||||||
options.send_addr_size = 0; // TODO
|
options.send_addr_size = 0; // TODO
|
||||||
|
|
|
@ -27,25 +27,29 @@ extern "C" {
|
||||||
|
|
||||||
typedef struct chiaki_discovery_service_options_t
|
typedef struct chiaki_discovery_service_options_t
|
||||||
{
|
{
|
||||||
size_t servers_max;
|
size_t hosts_max;
|
||||||
uint64_t ping_ms;
|
uint64_t ping_ms;
|
||||||
struct sockaddr *send_addr;
|
struct sockaddr *send_addr;
|
||||||
size_t send_addr_size;
|
size_t send_addr_size;
|
||||||
} ChiakiDiscoveryServiceOptions;
|
} ChiakiDiscoveryServiceOptions;
|
||||||
|
|
||||||
typedef struct chiaki_discovery_service_server_t
|
typedef struct chiaki_discovery_service_host_discovery_info_t
|
||||||
{
|
{
|
||||||
uint64_t last_ping_index;
|
uint64_t last_ping_index;
|
||||||
} ChiakiDiscoveryServiceServer;
|
} ChiakiDiscoveryServiceHostDiscoveryInfo;
|
||||||
|
|
||||||
typedef struct chiaki_discovery_service_t
|
typedef struct chiaki_discovery_service_t
|
||||||
{
|
{
|
||||||
ChiakiLog *log;
|
ChiakiLog *log;
|
||||||
ChiakiDiscoveryServiceOptions options;
|
ChiakiDiscoveryServiceOptions options;
|
||||||
ChiakiDiscovery discovery;
|
ChiakiDiscovery discovery;
|
||||||
|
|
||||||
uint64_t ping_index;
|
uint64_t ping_index;
|
||||||
ChiakiDiscoveryServiceServer *servers;
|
ChiakiDiscoveryHost *hosts;
|
||||||
size_t servers_count;
|
ChiakiDiscoveryServiceHostDiscoveryInfo *host_discovery_infos;
|
||||||
|
size_t hosts_count;
|
||||||
|
ChiakiMutex state_mutex;
|
||||||
|
|
||||||
ChiakiThread thread;
|
ChiakiThread thread;
|
||||||
ChiakiBoolPredCond stop_cond;
|
ChiakiBoolPredCond stop_cond;
|
||||||
} ChiakiDiscoveryService;
|
} ChiakiDiscoveryService;
|
||||||
|
|
|
@ -20,18 +20,19 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static void *discovery_service_thread_func(void *user);
|
static void *discovery_service_thread_func(void *user);
|
||||||
|
static void discovery_service_ping(ChiakiDiscoveryService *service);
|
||||||
|
|
||||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_service_init(ChiakiDiscoveryService *service, ChiakiDiscoveryServiceOptions *options, ChiakiLog *log)
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_service_init(ChiakiDiscoveryService *service, ChiakiDiscoveryServiceOptions *options, ChiakiLog *log)
|
||||||
{
|
{
|
||||||
service->options = *options;
|
service->options = *options;
|
||||||
service->servers = calloc(service->options.servers_max, sizeof(ChiakiDiscoveryServiceServer));
|
service->host_discovery_infos = calloc(service->options.hosts_max, sizeof(ChiakiDiscoveryServiceHostDiscoveryInfo));
|
||||||
if(!service->servers)
|
if(!service->host_discovery_infos)
|
||||||
return CHIAKI_ERR_MEMORY;
|
return CHIAKI_ERR_MEMORY;
|
||||||
service->options.send_addr = malloc(service->options.send_addr_size);
|
service->options.send_addr = malloc(service->options.send_addr_size);
|
||||||
if(!service->options.send_addr)
|
if(!service->options.send_addr)
|
||||||
goto error_servers;
|
goto error_servers;
|
||||||
memcpy(service->options.send_addr, options->send_addr, service->options.send_addr_size);
|
memcpy(service->options.send_addr, options->send_addr, service->options.send_addr_size);
|
||||||
service->servers_count = 0;
|
service->hosts_count = 0;
|
||||||
|
|
||||||
ChiakiErrorCode err = chiaki_discovery_init(&service->discovery, log, service->options.send_addr->sa_family);
|
ChiakiErrorCode err = chiaki_discovery_init(&service->discovery, log, service->options.send_addr->sa_family);
|
||||||
if(err != CHIAKI_ERR_SUCCESS)
|
if(err != CHIAKI_ERR_SUCCESS)
|
||||||
|
@ -55,7 +56,7 @@ error_discovery:
|
||||||
error_send_addr:
|
error_send_addr:
|
||||||
free(service->options.send_addr);
|
free(service->options.send_addr);
|
||||||
error_servers:
|
error_servers:
|
||||||
free(service->servers);
|
free(service->host_discovery_infos);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,12 +66,10 @@ CHIAKI_EXPORT void chiaki_discovery_service_fini(ChiakiDiscoveryService *service
|
||||||
chiaki_thread_join(&service->thread, NULL);
|
chiaki_thread_join(&service->thread, NULL);
|
||||||
chiaki_bool_pred_cond_fini(&service->stop_cond);
|
chiaki_bool_pred_cond_fini(&service->stop_cond);
|
||||||
chiaki_discovery_fini(&service->discovery);
|
chiaki_discovery_fini(&service->discovery);
|
||||||
free(service->servers);
|
free(service->host_discovery_infos);
|
||||||
free(service->options.send_addr);
|
free(service->options.send_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void discovery_service_ping(ChiakiDiscoveryService *service);
|
|
||||||
|
|
||||||
static void *discovery_service_thread_func(void *user)
|
static void *discovery_service_thread_func(void *user)
|
||||||
{
|
{
|
||||||
ChiakiDiscoveryService *service = user;
|
ChiakiDiscoveryService *service = user;
|
||||||
|
@ -93,6 +92,7 @@ static void *discovery_service_thread_func(void *user)
|
||||||
|
|
||||||
static void discovery_service_ping(ChiakiDiscoveryService *service)
|
static void discovery_service_ping(ChiakiDiscoveryService *service)
|
||||||
{
|
{
|
||||||
|
CHIAKI_LOGV(service->log, "Discovery Service sending ping");
|
||||||
ChiakiDiscoveryPacket packet = { 0 };
|
ChiakiDiscoveryPacket packet = { 0 };
|
||||||
packet.cmd = CHIAKI_DISCOVERY_CMD_SRCH;
|
packet.cmd = CHIAKI_DISCOVERY_CMD_SRCH;
|
||||||
chiaki_discovery_send(&service->discovery, &packet, service->options.send_addr, service->options.send_addr_size);
|
chiaki_discovery_send(&service->discovery, &packet, service->options.send_addr, service->options.send_addr_size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue