bool AbstractCarrier::defaultSendAck(ConnectionState& proto) { YARP_DEBUG(Logger::get(),"sending an acknowledgment"); if (proto.getConnection().requireAck()) { writeYarpInt(0,proto); } return true; }
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(); }
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; }