summaryrefslogtreecommitdiff
path: root/src/network.cpp
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2023-05-06 17:09:32 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2023-05-06 18:54:24 +0200
commit25a1ba71e3cf4250489291f688423963aa603498 (patch)
treefb1e23060b810237316f4cde6524c0b1a66d5d0e /src/network.cpp
parent07f61b1ad6363cd471b7dab3f94c3160636fd6a0 (diff)
Server and services configuration using separate objects
Diffstat (limited to 'src/network.cpp')
-rw-r--r--src/network.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/network.cpp b/src/network.cpp
index dafab67..5c268ae 100644
--- a/src/network.cpp
+++ b/src/network.cpp
@@ -24,11 +24,12 @@ using std::unique_lock;
using namespace erebos;
-Server::Server(const Head<LocalState> & head, vector<unique_ptr<Service>> && svcs):
- p(new Priv(head, *head->identity(), std::move(svcs)))
+Server::Server(const Head<LocalState> & head, ServerConfig && config):
+ p(new Priv(head, *head->identity()))
{
- for (const auto & s : p->services)
- s->serverStarted(*this);
+ p->services.reserve(config.services.size());
+ for (const auto & ctor : config.services)
+ p->services.emplace_back(ctor(*this));
}
Server:: Server(const std::shared_ptr<Priv> & ptr):
@@ -223,13 +224,11 @@ void PeerList::onUpdate(function<void(size_t, const Peer *)> w)
}
-Server::Priv::Priv(const Head<LocalState> & local, const Identity & self,
- vector<unique_ptr<Service>> && svcs):
+Server::Priv::Priv(const Head<LocalState> & local, const Identity & self):
self(self),
// Watching needs to start after self is initialized
localState(local.behavior()),
- localHead(local.watch(std::bind(&Priv::handleLocalHeadChange, this, std::placeholders::_1))),
- services(std::move(svcs))
+ localHead(local.watch(std::bind(&Priv::handleLocalHeadChange, this, std::placeholders::_1)))
{
struct ifaddrs * raddrs;
if (getifaddrs(&raddrs) < 0)