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

Function BuildQueryMessage

engine/dlib/src/dlib/mdns.cpp:1067–1103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1065 }
1066
1067 static uint32_t BuildQueryMessage(const Browser* browser, uint64_t now, uint8_t* buffer, uint32_t buffer_size)
1068 {
1069 uint32_t offset = 0;
1070 uint16_t answer_count = 0;
1071 if (!WriteU16(buffer, buffer_size, &offset, 0) // id
1072 || !WriteU16(buffer, buffer_size, &offset, 0) // query
1073 || !WriteU16(buffer, buffer_size, &offset, 1) // one question
1074 || !WriteU16(buffer, buffer_size, &offset, 0) // answers (known answers patched later)
1075 || !WriteU16(buffer, buffer_size, &offset, 0)
1076 || !WriteU16(buffer, buffer_size, &offset, 0)
1077 || !WriteName(buffer, buffer_size, &offset, browser->m_ServiceTypeLocal)
1078 || !WriteU16(buffer, buffer_size, &offset, DNS_TYPE_PTR)
1079 || !WriteU16(buffer, buffer_size, &offset, DNS_CLASS_IN))
1080 {
1081 return 0;
1082 }
1083
1084 for (uint32_t i = 0; i < browser->m_Services.Size(); ++i)
1085 {
1086 const BrowserService& service = browser->m_Services[i];
1087 if (!ShouldIncludeKnownAnswer(service, now))
1088 continue;
1089
1090 const uint32_t ttl = RemainingTtlSeconds(service.m_PtrExpires, now);
1091 if (ttl == 0)
1092 continue;
1093
1094 if (!WriteRecordPtr(buffer, buffer_size, &offset, browser->m_ServiceTypeLocal, service.m_FullServiceName, ttl))
1095 return 0;
1096 ++answer_count;
1097 }
1098
1099 buffer[6] = (uint8_t) ((answer_count >> 8) & 0xff);
1100 buffer[7] = (uint8_t) (answer_count & 0xff);
1101
1102 return offset;
1103 }
1104
1105 static int32_t FindRegisteredService(dmArray<RegisteredService>& services, const char* id)
1106 {

Callers 1

UpdateBrowserFunction · 0.85

Calls 6

ShouldIncludeKnownAnswerFunction · 0.85
RemainingTtlSecondsFunction · 0.85
WriteRecordPtrFunction · 0.85
WriteU16Function · 0.70
WriteNameFunction · 0.70
SizeMethod · 0.45

Tested by

no test coverage detected