1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard // found in the LICENSE file.
4*3f982cf4SFabien Sanglard
5*3f982cf4SFabien Sanglard #include "discovery/dnssd/impl/service_instance.h"
6*3f982cf4SFabien Sanglard
7*3f982cf4SFabien Sanglard #include <utility>
8*3f982cf4SFabien Sanglard
9*3f982cf4SFabien Sanglard #include "discovery/common/config.h"
10*3f982cf4SFabien Sanglard #include "discovery/mdns/public/mdns_service.h"
11*3f982cf4SFabien Sanglard #include "platform/api/task_runner.h"
12*3f982cf4SFabien Sanglard
13*3f982cf4SFabien Sanglard namespace openscreen {
14*3f982cf4SFabien Sanglard namespace discovery {
15*3f982cf4SFabien Sanglard
ServiceInstance(TaskRunner * task_runner,ReportingClient * reporting_client,const Config & config,const InterfaceInfo & network_info)16*3f982cf4SFabien Sanglard ServiceInstance::ServiceInstance(TaskRunner* task_runner,
17*3f982cf4SFabien Sanglard ReportingClient* reporting_client,
18*3f982cf4SFabien Sanglard const Config& config,
19*3f982cf4SFabien Sanglard const InterfaceInfo& network_info)
20*3f982cf4SFabien Sanglard : task_runner_(task_runner),
21*3f982cf4SFabien Sanglard mdns_service_(MdnsService::Create(task_runner,
22*3f982cf4SFabien Sanglard reporting_client,
23*3f982cf4SFabien Sanglard config,
24*3f982cf4SFabien Sanglard network_info)),
25*3f982cf4SFabien Sanglard network_config_(network_info.index,
26*3f982cf4SFabien Sanglard network_info.GetIpAddressV4(),
27*3f982cf4SFabien Sanglard network_info.GetIpAddressV6()) {
28*3f982cf4SFabien Sanglard if (config.enable_querying) {
29*3f982cf4SFabien Sanglard querier_ = std::make_unique<QuerierImpl>(
30*3f982cf4SFabien Sanglard mdns_service_.get(), task_runner_, reporting_client, &network_config_);
31*3f982cf4SFabien Sanglard }
32*3f982cf4SFabien Sanglard if (config.enable_publication) {
33*3f982cf4SFabien Sanglard publisher_ = std::make_unique<PublisherImpl>(
34*3f982cf4SFabien Sanglard mdns_service_.get(), reporting_client, task_runner_, &network_config_);
35*3f982cf4SFabien Sanglard }
36*3f982cf4SFabien Sanglard }
37*3f982cf4SFabien Sanglard
~ServiceInstance()38*3f982cf4SFabien Sanglard ServiceInstance::~ServiceInstance() {
39*3f982cf4SFabien Sanglard OSP_DCHECK(task_runner_->IsRunningOnTaskRunner());
40*3f982cf4SFabien Sanglard }
41*3f982cf4SFabien Sanglard
42*3f982cf4SFabien Sanglard } // namespace discovery
43*3f982cf4SFabien Sanglard } // namespace openscreen
44