YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
NameServerManager.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef YARPDB_NAMESERVERMANAGER_INC
8#define YARPDB_NAMESERVERMANAGER_INC
9
11
13#include <mutex>
14#include <yarp/os/Port.h>
15
16
17namespace yarp::name {
18class NameServerManager;
19}
20
28private:
29 NameService& ns;
30 yarp::os::Port *port;
31 std::mutex mutex;
32public:
34 yarp::os::Port *port = NULL) : ns(ns),
35 port(port), mutex() {
36 }
37
38 void setPort(yarp::os::Port& port) {
39 this->port = &port;
40 }
41
42 void onEvent(yarp::os::Bottle& event) override {
43 ns.onEvent(event);
44 if (port!=NULL) {
45 port->write(event);
46 }
47 }
48
49 yarp::os::PortReader *create() const override {
50 return new NameServerConnectionHandler(const_cast<NameServerManager*>(this));
51 }
52
53 void lock() override {
54 mutex.lock();
55 }
56
57 void unlock() override {
58 mutex.unlock();
59 }
60
61 virtual bool apply(yarp::os::Bottle& cmd,
62 yarp::os::Bottle& reply,
63 yarp::os::Bottle& event,
64 const yarp::os::Contact& remote) override {
65 bool ok = ns.apply(cmd,reply,event,remote);
66 return ok;
67 }
68};
69
70#endif
Manage a single connection to the name server.
Manage the name server.
void setPort(yarp::os::Port &port)
void onEvent(yarp::os::Bottle &event) override
virtual bool apply(yarp::os::Bottle &cmd, yarp::os::Bottle &reply, yarp::os::Bottle &event, const yarp::os::Contact &remote) override
yarp::os::PortReader * create() const override
Factory for PortReader objects.
NameServerManager(NameService &ns, yarp::os::Port *port=NULL)
Abstract interface for a name server operator.
Definition NameService.h:24
virtual void onEvent(yarp::os::Bottle &event)
Definition NameService.h:33
virtual bool apply(yarp::os::Bottle &cmd, yarp::os::Bottle &reply, yarp::os::Bottle &event, const yarp::os::Contact &remote)=0
A simple collection of objects that can be described and transmitted in a portable way.
Definition Bottle.h:64
Represents how to reach a part of a YARP network.
Definition Contact.h:33
A creator for readers.
Interface implemented by all objects that can read themselves from the network, such as Bottle object...
Definition PortReader.h:24
A mini-server for network communication.
Definition Port.h:46
bool write(const PortWriter &writer, const PortWriter *callback=nullptr) const override
Write an object to the port.
Definition Port.cpp:436