本文整理汇总了C++中ConnectionReader::isValid方法的典型用法代码示例。如果您正苦于以下问题:C++ ConnectionReader::isValid方法的具体用法?C++ ConnectionReader::isValid怎么用?C++ ConnectionReader::isValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConnectionReader
的用法示例。
在下文中一共展示了ConnectionReader::isValid方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getBusStats
bool yarp::os::Node::Helper::read(ConnectionReader& reader)
{
if (!reader.isValid()) {
return false;
}
NodeArgs na;
na.request.read(reader);
//printf("NODE API for %s received %s\n",
//name.c_str(),
//na.request.toString().c_str());
std::string key = na.request.get(0).asString();
na.args = na.request.tail().tail();
if (key=="getBusStats") {
getBusStats(na);
} else if (key=="getBusInfo") {
getBusInfo(na);
} else if (key=="getMasterUri") {
getMasterUri(na);
} else if (key=="shutdown") {
shutdown(na);
} else if (key=="getPid") {
getPid(na);
} else if (key=="getSubscriptions") {
getSubscriptions(na);
} else if (key=="getPublications") {
getPublications(na);
} else if (key=="paramUpdate") {
paramUpdate(na);
} else if (key=="publisherUpdate") {
publisherUpdate(na);
} else if (key=="requestTopic") {
requestTopic(na);
} else {
na.error("I have no idea what you are talking about");
}
if (na.should_drop) {
reader.requestDrop(); // ROS likes to close down.
}
if (reader.getWriter()) {
Bottle full;
full.addInt32(na.code);
full.addString(na.msg);
full.add(na.reply);
//printf("NODE %s <<< %s\n",
//name.c_str(),
//full.toString().c_str());
full.write(*reader.getWriter());
}
return true;
}
示例2: read
bool read(ConnectionReader& reader) override {
if (!reader.isValid()) {
return false;
}
receives++;
BottleImpl bot;
bot.read(reader);
if (expectation==std::string("")) {
report(1,"got unexpected input");
return false;
}
checkEqual(bot.toString(),expectation,"received bottle");
return true;
}
示例3: read
virtual bool read(ConnectionReader& reader) {
// called by comms code
readBlock.wait();
if (!reader.isValid()) {
// termination
stateMutex.wait();
if (readDelegate!=NULL) {
readResult = readDelegate->read(reader);
}
stateMutex.post();
produce.post();
readBlock.post();
return false;
}
// wait for happy consumer - don't want to miss a packet
if (!readBackground) {
consume.wait();
}
if (closed) {
YARP_DEBUG(Logger::get(),"Port::read shutting down");
readBlock.post();
return false;
}
stateMutex.wait();
readResult = false;
if (readDelegate!=NULL) {
readResult = readDelegate->read(reader);
} else {
// read and ignore
YARP_DEBUG(Logger::get(),"data received in Port, no reader for it");
Bottle b;
b.read(reader);
}
if (!readBackground) {
readDelegate = NULL;
writeDelegate = NULL;
}
bool result = readResult;
stateMutex.post();
if (!readBackground) {
produce.post();
}
if (result&&willReply) {
consume.wait();
if (closed) {
YARP_DEBUG(Logger::get(),"Port::read shutting down");
readBlock.post();
return false;
}
if (writeDelegate!=NULL) {
stateMutex.wait();
ConnectionWriter *writer = reader.getWriter();
if (writer!=NULL) {
result = readResult = writeDelegate->write(*writer);
}
stateMutex.post();
}
if (dropDue) {
reader.requestDrop();
}
produce.post();
}
readBlock.post();
return result;
}
示例4: read
bool PortReaderBufferBase::read(ConnectionReader& connection)
{
if (connection.getReference()!=nullptr) {
//printf("REF %ld %d\n", (long int)connection.getReference(),
// connection.isValid());
return acceptObjectBase(connection.getReference(), nullptr);
}
if (mPriv->replier != nullptr) {
if (connection.getWriter()) {
return mPriv->replier->read(connection);
}
}
PortReaderPacket *reader = nullptr;
while (reader==nullptr) {
mPriv->stateSema.wait();
reader = mPriv->get();
if (reader && reader->getReader() == nullptr) {
PortReader *next = create();
yAssert(next != nullptr);
reader->setReader(next);
}
mPriv->stateSema.post();
if (reader==nullptr) {
mPriv->consumeSema.wait();
}
}
bool ok = false;
if (connection.isValid()) {
yAssert(reader->getReader()!=nullptr);
ok = reader->getReader()->read(connection);
reader->setEnvelope(connection.readEnvelope());
} else {
// this is a disconnection
// don't talk to this port ever again
mPriv->port = nullptr;
}
if (ok) {
mPriv->stateSema.wait();
bool pruned = false;
if (mPriv->ct>0 && mPriv->prune) {
PortReaderPacket *readerPacket =
mPriv->dropContent();
pruned = (readerPacket!=nullptr);
}
//mPriv->configure(reader, false, true);
mPriv->pool.addActivePacket(reader);
mPriv->ct++;
mPriv->stateSema.post();
if (!pruned) {
mPriv->contentSema.post();
}
//YARP_ERROR(Logger::get(), ">>>>>>>>>>>>>>>>> adding data");
} else {
mPriv->stateSema.wait();
mPriv->pool.addInactivePacket(reader);
mPriv->stateSema.post();
//YARP_ERROR(Logger::get(), ">>>>>>>>>>>>>>>>> skipping data");
// important to give reader a shot anyway, allowing proper closing
YARP_DEBUG(Logger::get(), "giving PortReaderBuffer chance to close");
mPriv->contentSema.post();
}
return ok;
}