WebRTCResolver.cpp [plain text]
#include "config.h"
#include "WebRTCResolver.h"
#if USE(LIBWEBRTC)
#include "LibWebRTCResolver.h"
#include "LibWebRTCSocketFactory.h"
#include <WebCore/LibWebRTCProvider.h>
#include <wtf/Function.h>
namespace WebKit {
WebRTCResolver::WebRTCResolver(LibWebRTCSocketFactory& socketFactory, LibWebRTCResolverIdentifier identifier)
: m_socketFactory(socketFactory)
, m_identifier(identifier)
{
}
void WebRTCResolver::setResolvedAddress(const Vector<RTCNetwork::IPAddress>& addresses)
{
auto identifier = m_identifier;
auto& factory = m_socketFactory;
Vector<rtc::IPAddress> rtcAddresses;
rtcAddresses.reserveInitialCapacity(addresses.size());
for (auto& address : addresses)
rtcAddresses.uncheckedAppend(address.value);
WebCore::LibWebRTCProvider::callOnWebRTCNetworkThread([&factory, identifier, rtcAddresses = WTFMove(rtcAddresses)]() {
auto* resolver = factory.resolver(identifier);
if (!resolver)
return;
resolver->setResolvedAddress(rtcAddresses);
});
}
void WebRTCResolver::resolvedAddressError(int error)
{
auto identifier = m_identifier;
auto& factory = m_socketFactory;
WebCore::LibWebRTCProvider::callOnWebRTCNetworkThread([&factory, identifier, error]() {
auto* resolver = factory.resolver(identifier);
if (!resolver)
return;
resolver->setError(error);
});
}
}
#endif // USE(LIBWEBRTC)