23 t.setNsNameValue(
"alloc",
"tmpid",
"*");
27 t.setNsNameValue(
"alloc",
"*",
"free");
28 std::list<Triple> match = db->
query(
t,&context);
30 name = match.begin()->name;
36 t.setNsNameValue(
"alloc",
"tmpid",
"*");
37 std::list<Triple> lst = db->
query(
t,
nullptr);
39 tmpid =
atoi(lst.begin()->value.c_str());
47 std::snprintf(buf, 256,
"%d", tmpid);
48 t.setNsNameValue(
"alloc",
"tmpid",buf);
50 t.setNsNameValue(
"alloc",
"tmpid",
"*");
52 std::snprintf(buf, 256,
"/tmp/port/%u", tmpid);
56 t.setNsNameValue(
"alloc",name.c_str(),
"in_use");
72 if (
c.getPort()!=-1 &&
c.getPort()!=0) {
87 t.setNsNameValue(
"alloc",
"regid",
"*");
91 t.setNsNameValue(
"prefer",
"*",
c.
getName().c_str());
92 std::list<Triple> match = db->
query(
t,&context);
94 npref = match.begin()->name;
96 t.setNsNameValue(
"alloc",
npref.c_str(),
"in_use");
97 match = db->
query(
t,&context);
98 if (match.size()==0) {
108 t.setNsNameValue(
"alloc",
"regid",
"*");
109 std::list<Triple> lst = db->
query(
t,
nullptr);
111 regid =
atoi(lst.begin()->value.c_str());
119 t.setNsNameValue(
"alloc",
"*",
"free");
120 std::list<Triple> match = db->
query(
t,&context);
121 if (match.size()>0) {
136 std::snprintf(buf, 256,
"%d", regid);
137 t.setNsNameValue(
"alloc",
"regid",buf);
139 t.setNsNameValue(
"alloc",
"regid",
"*");
145 t.setNsNameValue(
"alloc",
nstring.c_str(),
"in_use");
159 if (
c.getCarrier()!=
"mcast") {
162 if (
c.getHost()!=
"...") {
168 t.setNsNameValue(
"alloc",
"mcastCursor",
"*");
171 if (context.
rid>=0) {
172 t.setNsNameValue(
"alloc",
"*",
"free");
173 std::list<Triple> match = db->
query(
t,&context);
174 if (match.size()>0) {
175 name = match.begin()->name;
180 if (mcastCursor==-1) {
181 t.setNsNameValue(
"alloc",
"mcastCursor",
"*");
182 std::list<Triple> lst = db->
query(
t,
nullptr);
184 mcastCursor =
atoi(lst.begin()->value.c_str());
186 if (mcastCursor==-1) {
192 std::snprintf(buf, 256,
"%d", mcastCursor);
193 t.setNsNameValue(
"alloc",
"mcastCursor",buf);
195 t.setNsNameValue(
"alloc",
"mcastCursor",
"*");
198 int v1 = mcastCursor%255;
199 int v2 = mcastCursor/255;
204 std::snprintf(buf, 256,
"224.1.%d.%d",
v2+1,
v1+1);
208 t.setNsNameValue(
"alloc",name.c_str(),
"in_use");
224 t.setNsNameValue(
"alloc",
"tmpid",
"*");
227 t.setNsNameValue(
"alloc",portName.c_str(),
"in_use");
228 if (db->
find(
t,&context)>=0) {
229 t.setNsNameValue(
"alloc",portName.c_str(),
"free");
233 t.setNsNameValue(
"alloc",
"regid",
"*");
237 t.setNsNameValue(
"alloc",buf,
"in_use");
238 if (db->
find(
t,&context)>=0) {
239 t.setNsNameValue(
"alloc",buf,
"free");
243 t.setNsNameValue(
"alloc",
"mcastCursor",
"*");
245 t.setNsNameValue(
"alloc",
hostName.c_str(),
"in_use");
246 if (db->
find(
t,&context)>=0) {
247 t.setNsNameValue(
"alloc",
hostName.c_str(),
"free");
A mini-server for performing network communication in the background.
std::string getName() const override
Get name of port.
yarp::os::Contact completeSocket(const yarp::os::Contact &c) override
bool freePortResources(const yarp::os::Contact &c) override
yarp::os::Contact completePortNumber(const yarp::os::Contact &c)
yarp::os::Contact completeHost(const yarp::os::Contact &c)
yarp::os::Contact completePortName(const yarp::os::Contact &c) override
Side information for controlling access to triples.
virtual std::list< Triple > query(Triple &ti, TripleContext *context)=0
virtual int find(Triple &t, TripleContext *context)=0
virtual void update(Triple &t, TripleContext *context)=0
The basic unit of data the name server works with.
#define yCError(component,...)
#define YARP_SERVERSQL_LOG_COMPONENT(name, name_string)
An interface to the operating system, including Port based communication.