#ifndef UA_DISCOVERY_MANAGER_H_
#define UA_DISCOVERY_MANAGER_H_
#include "ua_server_internal.h"
_UA_BEGIN_DECLS
#ifdef UA_ENABLE_DISCOVERY
#ifdef UA_ENABLE_DISCOVERY
struct UA_DiscoveryManager;
typedef struct UA_DiscoveryManager UA_DiscoveryManager;
#endif
typedef struct registeredServer {
LIST_ENTRY(registeredServer) pointers;
UA_RegisteredServer registeredServer;
UA_DateTime lastSeen;
} registeredServer;
typedef struct {
UA_DelayedCallback cleanupCallback;
UA_Server *server;
UA_DiscoveryManager *dm;
UA_Client *client;
UA_String semaphoreFilePath;
UA_Boolean unregister;
UA_Boolean register2;
UA_Boolean shutdown;
UA_Boolean connectSuccess;
} asyncRegisterRequest;
#define UA_MAXREGISTERREQUESTS 4
struct UA_DiscoveryManager {
UA_ServerComponent sc;
UA_UInt64 discoveryCallbackId;
asyncRegisterRequest registerRequests[UA_MAXREGISTERREQUESTS];
LIST_HEAD(, registeredServer) registeredServers;
size_t registeredServersSize;
UA_Server_registerServerCallback registerServerCallback;
void* registerServerCallbackData;
# ifdef UA_ENABLE_DISCOVERY_MULTICAST
UA_Boolean mdnsMainSrvAdded;
UA_Server_serverOnNetworkCallback serverOnNetworkCallback;
void *serverOnNetworkCallbackData;
# ifdef UA_ENABLE_DISCOVERY_MULTICAST_MDNSD
UA_ConnectionManager *cm;
# endif
# endif
};
void
UA_DiscoveryManager_setState(UA_DiscoveryManager *dm,
UA_LifecycleState state);
#ifdef UA_ENABLE_DISCOVERY_MULTICAST
void
UA_Discovery_updateMdnsForDiscoveryUrl(UA_DiscoveryManager *dm, const UA_String serverName,
const UA_MdnsDiscoveryConfiguration *mdnsConfig,
const UA_String discoveryUrl, UA_Boolean isOnline,
UA_Boolean updateTxt);
void UA_DiscoveryManager_startMulticast(UA_DiscoveryManager *dm);
void UA_DiscoveryManager_stopMulticast(UA_DiscoveryManager *dm);
void
UA_DiscoveryManager_clearMdns(UA_DiscoveryManager *dm);
UA_UInt32
UA_DiscoveryManager_getMdnsConnectionCount(void);
UA_UInt32
UA_DiscoveryManager_getServerOnNetworkRecordIdCounter(UA_DiscoveryManager *dm);
UA_StatusCode
UA_DiscoveryManager_resetServerOnNetworkRecordCounter(UA_DiscoveryManager *dm);
UA_DateTime
UA_DiscoveryManager_getServerOnNetworkCounterResetTime(UA_DiscoveryManager *dm);
UA_ServerOnNetwork*
UA_DiscoveryManager_getServerOnNetworkList(UA_DiscoveryManager *dm);
UA_ServerOnNetwork*
UA_DiscoveryManager_getNextServerOnNetworkRecord(UA_DiscoveryManager *dm,
UA_ServerOnNetwork *current);
UA_StatusCode
UA_DiscoveryManager_clearServerOnNetwork(UA_DiscoveryManager *dm);
void
UA_DiscoveryManager_mdnsCyclicTimer(UA_Server *server, void *data);
#endif
#endif
_UA_END_DECLS
#endif