# libweave provider examples

This directory contains example implementations of `weave` system providers.

## Providers
- `avahi_client.cc`
  - implements: `weave::providerDnsServiceDiscovery`
  - build-depends: libavahi-client
  - run-depends: `avahi-daemon`
- `bluez_client.cc`
  - not-implemented
- `curl_http_client.cc`
  - implements: `weave::provider::HttpClient`
  - build-depends: libcurl
- `event_http_server.cc`
  - implements: `weave::provider::HttpServer`
  - build-depends: libevhtp
- `event_network.cc`
  - implements: `weave::provider::Network`
  - build-depends: libevent
- `event_task_runner.cc`
  - implements: `weave::provider::TaskRunner`
  - build-depends: libevent
- `file_config_store.cc`
  - implements: `weave::provider::ConfigStore`
- `wifi_manager.cc`
  - implements: `weave::provider::Wifi`
  - build-depends: `weave::examples::EventNetworkImpl`
  - run-depends: `network-manager`, `dnsmasq`, `hostapd`

Note:
- The example providers are based on `libevent` and should be portable between most GNU/Linux distributions.
- `weave::examples::WifiImpl` currently shells out to system
  command tools like `nmcli`, `dnsmasq`, `ifconfig` and `hostpad`.
