MCPcopy Create free account
hub / github.com/defold/defold / DiscoveryServiceNew

Function DiscoveryServiceNew

engine/engine/src/engine_service_discovery.cpp:60–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58 }
59
60 HDiscoveryService DiscoveryServiceNew(const char* service_id, const char* instance_name, uint16_t port, const DiscoveryTxtEntry* txt_entries, uint32_t txt_count)
61 {
62 if (service_id == 0 || instance_name == 0 || port == 0 || txt_entries == 0)
63 return 0;
64
65 dmMDNS::TxtEntry mdns_txt_entries[DISCOVERY_MAX_TXT_ENTRIES];
66 const uint32_t mdns_txt_entries_count = DM_ARRAY_SIZE(mdns_txt_entries);
67 if (txt_count > mdns_txt_entries_count)
68 {
69 dmLogWarning("Unable to register mDNS service, too many TXT entries (%u)", txt_count);
70 return 0;
71 }
72
73 for (uint32_t i = 0; i < txt_count; ++i)
74 {
75 mdns_txt_entries[i].m_Key = txt_entries[i].m_Key;
76 mdns_txt_entries[i].m_Value = txt_entries[i].m_Value;
77 }
78
79 dmMDNS::Params mdns_params;
80 mdns_params.m_AnnounceInterval = DISCOVERY_ANNOUNCE_INTERVAL;
81 mdns_params.m_Ttl = DISCOVERY_TTL;
82
83 dmMDNS::HMDNS mdns = 0;
84 dmMDNS::Result mr = dmMDNS::New(&mdns_params, &mdns);
85 if (mr != dmMDNS::RESULT_OK)
86 {
87 dmLogWarning("Unable to create mDNS service (%d)", mr);
88 return 0;
89 }
90
91 dmMDNS::ServiceDesc mdns_desc;
92 memset(&mdns_desc, 0, sizeof(mdns_desc));
93 char host_name[64];
94 BuildDiscoveryHostName(service_id, host_name, sizeof(host_name));
95
96 mdns_desc.m_Id = service_id;
97 mdns_desc.m_InstanceName = instance_name;
98 mdns_desc.m_ServiceType = DISCOVERY_SERVICE_TYPE;
99 mdns_desc.m_Host = host_name;
100 mdns_desc.m_Port = port;
101 mdns_desc.m_Txt = mdns_txt_entries;
102 mdns_desc.m_TxtCount = txt_count;
103 mdns_desc.m_Ttl = mdns_params.m_Ttl;
104
105 mr = dmMDNS::RegisterService(mdns, &mdns_desc);
106 if (mr != dmMDNS::RESULT_OK)
107 {
108 dmMDNS::Delete(mdns);
109 dmLogWarning("Unable to register mDNS service (%d)", mr);
110 return 0;
111 }
112
113 DiscoveryService* discovery_service = new DiscoveryService();
114 discovery_service->m_MDNS = mdns;
115 dmStrlCpy(discovery_service->m_ServiceId, service_id, sizeof(discovery_service->m_ServiceId));
116 return discovery_service;
117 }

Callers 1

InitMethod · 0.85

Calls 5

BuildDiscoveryHostNameFunction · 0.85
RegisterServiceFunction · 0.85
dmStrlCpyFunction · 0.85
NewFunction · 0.70
DeleteFunction · 0.70

Tested by

no test coverage detected