Пример #1
0
bool AbstractCarrier::defaultSendAck(ConnectionState& proto) {
    YARP_DEBUG(Logger::get(),"sending an acknowledgment");
    if (proto.getConnection().requireAck()) {
        writeYarpInt(0,proto);
    }
    return true;
}
Пример #2
0
bool AbstractCarrier::sendConnectionStateSpecifier(ConnectionState& proto) {
    char buf[8];
    Bytes header((char*)&buf[0],sizeof(buf));
    OutputStream& os = proto.os();
    proto.getConnection().getHeader(header);
    os.write(header);
    os.flush();
    return os.isOk();
}
Пример #3
0
bool AbstractCarrier::defaultExpectAck(ConnectionState& proto) {
    if (proto.getConnection().requireAck()) {
        char buf[8];
        Bytes header((char*)&buf[0],sizeof(buf));
        YARP_SSIZE_T hdr = proto.is().readFull(header);
        if ((size_t)hdr!=header.length()) {
            YARP_DEBUG(proto.getLog(),"did not get acknowledgement header");
            return false;
        }
        int len = interpretYarpNumber(header);
        if (len<0) {
            YARP_DEBUG(proto.getLog(),"acknowledgement header is bad");
            return false;
        }
        size_t len2 = proto.is().readDiscard(len);
        if ((size_t)len!=len2) {
            YARP_DEBUG(proto.getLog(),"did not get an acknowledgement of the promised length");
            return false;
        }
    }
    return true;
}