mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-10 10:17:05 +01:00
52 lines
1018 B
C++
52 lines
1018 B
C++
/*
|
|
|
|
NETWORKING MODULE
|
|
|
|
Copyright (C) 2022 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
#include <IPAddress.h>
|
|
|
|
#include <memory>
|
|
|
|
#include <lwip/init.h>
|
|
#include <lwip/err.h>
|
|
|
|
#include "types.h"
|
|
|
|
namespace espurna {
|
|
namespace network {
|
|
namespace dns {
|
|
|
|
struct Host {
|
|
String name;
|
|
IPAddress addr;
|
|
err_t err;
|
|
};
|
|
|
|
using HostPtr = std::shared_ptr<Host>;
|
|
using HostCallback = std::function<void(HostPtr)>;
|
|
|
|
// DNS request is lauched in the background, HostPtr should be waited upon
|
|
HostPtr resolve(String);
|
|
|
|
// ...or, user callback is executed when DNS client is ready to return something
|
|
void resolve(String, HostCallback);
|
|
|
|
// Block until the HostPtr becomes available for reading, or when timeout occurs
|
|
bool wait_for(HostPtr, duration::Milliseconds);
|
|
|
|
// Arduino style result
|
|
IPAddress gethostbyname(String, duration::Milliseconds);
|
|
IPAddress gethostbyname(String);
|
|
|
|
} // namespace dns
|
|
} // namespace network
|
|
} // namespace espurna
|
|
|
|
void networkSetup();
|