bool Matrix::write(yarp::os::ConnectionWriter& connection) { MatrixPortContentHeader header; //header.totalLen = sizeof(header)+sizeof(double)*this->size(); header.outerListTag = BOTTLE_TAG_LIST; header.outerListLen = 3; header.rowsTag = BOTTLE_TAG_INT; header.colsTag = BOTTLE_TAG_INT; header.listTag = BOTTLE_TAG_LIST + BOTTLE_TAG_DOUBLE; header.rows=rows(); header.cols=cols(); header.listLen = header.rows*header.cols; connection.appendBlock((char*)&header, sizeof(header)); int l=0; const double *tmp=data(); for(l=0;l<header.listLen;l++) connection.appendDouble(tmp[l]); // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return true; }
bool MapGrid2D::write(yarp::os::ConnectionWriter& connection) { connection.appendInt(BOTTLE_TAG_LIST); connection.appendInt(9); connection.appendInt(BOTTLE_TAG_INT); connection.appendInt(m_width); connection.appendInt(BOTTLE_TAG_INT); connection.appendInt(m_height); connection.appendInt(BOTTLE_TAG_DOUBLE); connection.appendDouble(m_origin.x); connection.appendInt(BOTTLE_TAG_DOUBLE); connection.appendDouble(m_origin.y); connection.appendInt(BOTTLE_TAG_DOUBLE); connection.appendDouble(m_origin.theta); connection.appendInt(BOTTLE_TAG_DOUBLE); connection.appendDouble(m_resolution); connection.appendInt(BOTTLE_TAG_STRING); connection.appendRawString(m_map_name.c_str()); unsigned char *mem = nullptr; int memsize = 0; mem = m_map_occupancy.getRawImage(); memsize = m_map_occupancy.getRawImageSize(); connection.appendInt(BOTTLE_TAG_BLOB); connection.appendInt(memsize); connection.appendExternalBlock((char*)mem, memsize); mem = m_map_flags.getRawImage(); memsize = m_map_flags.getRawImageSize(); connection.appendInt(BOTTLE_TAG_BLOB); connection.appendInt(memsize); connection.appendExternalBlock((char*)mem, memsize); connection.convertTextMode(); return !connection.isError(); }
bool eventBottle::write(yarp::os::ConnectionWriter& connection) { connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_BLOB + BOTTLE_TAG_INT); connection.appendInt(2); // four elements size_t binaryDim; size_of_the_bottle = packet->size(); size_of_the_packet = size_of_the_bottle; bytes_of_the_packet = size_of_the_packet * 4; //packetPointer = (char*) packet->toBinary(&binaryDim); //bytes_of_the_packet = binaryDim; //size_of_the_packet = bytes_of_the_packet >> 2; connection.appendInt(bytes_of_the_packet); //connection.appendInt(size_of_the_packet); //bytes_of_the_packet = size_of_the_packet * wordDimension; // number of 32bit word times 4bytes //-------------------------------------------------------------------------------------------- // -------- serialisation of the bottle --------------------------- unsigned char tmpChar; char *p = packetPointer; for(int i = 0 ; i < size_of_the_packet ; i++) { int value = packet->get(i).asInt(); for (int j = 0 ; j < wordDimension ; j++){ int tmpInt = (value & 0x000000FF) ; tmpChar = (unsigned char) tmpInt; //printf("%02x %02x ",tmpInt,tmpChar); value = value >> 8; *p = tmpChar; p++; } } //---------------------------------------------------------------------------------------------- #if VERBOSE int word; printf("packet %d %d \n %s \n", size_of_the_packet, binaryDim, packet->toString().c_str()); char* i_data = packetPointer; for(int i = 0 ; i < binaryDim ;) { word = 0; for (int j = 0 ; j < wordDimension ; j++){ int value = (char) *i_data << (8 * j); word = word | value; i_data++; i++; } printf(">%08X ", word); } printf("\n"); #endif //----------------------------------------------------------------------------------------------- connection.appendBlock(packetPointer,bytes_of_the_packet); //serializing bottle into char* //printf("packet \n %s \n", packet->toString().c_str()); connection.convertTextMode(); // if connection is text-mode, convert! return true; }
bool C_sendingBuffer::write(yarp::os::ConnectionWriter& connection) { connection.appendInt(BOTTLE_TAG_LIST+BOTTLE_TAG_BLOB+BOTTLE_TAG_INT); connection.appendInt(2); // four elements connection.appendInt(size_of_the_packet); connection.appendBlock (packet, SIZE_OF_DATA); connection.convertTextMode(); // if connection is text-mode, convert! return true; }
bool eventBuffer::write(yarp::os::ConnectionWriter& connection) { connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_BLOB + BOTTLE_TAG_INT); connection.appendInt(2); // four elements connection.appendInt(size_of_the_packet); int ceilSizeOfPacket = (size_of_the_packet+7)/8*8; // the nearest multiple of 8 greater or equal to size_of_the_packet connection.appendBlock(packet,ceilSizeOfPacket); connection.convertTextMode(); // if connection is text-mode, convert! return true; }
bool Vector::write(yarp::os::ConnectionWriter& connection) { VectorPortContentHeader header; header.listTag = (BOTTLE_TAG_LIST | BOTTLE_TAG_DOUBLE); header.listLen = (int)size(); connection.appendBlock((char*)&header, sizeof(header)); int k=0; for (k=0;k<header.listLen;k++) connection.appendDouble((*this)[k]); // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return !connection.isError(); }
bool VectorBase::write(yarp::os::ConnectionWriter& connection) { VectorPortContentHeader header; //header.totalLen = sizeof(header)+sizeof(double)*this->size(); header.listTag = (BOTTLE_TAG_LIST | getBottleTag()); header.listLen = (int)getListSize(); connection.appendBlock((char*)&header, sizeof(header)); const char *ptr = getMemoryBlock(); int elemSize=getElementSize(); yAssert(ptr != nullptr); connection.appendExternalBlock(ptr, elemSize*header.listLen); // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return !connection.isError(); }
bool Quaternion::write(yarp::os::ConnectionWriter& connection) { QuaternionPortContentHeader header; header.listTag = (BOTTLE_TAG_LIST | BOTTLE_TAG_DOUBLE); header.listLen = 4; connection.appendBlock((char*)&header, sizeof(header)); connection.appendDouble(this->internal_data[0]); connection.appendDouble(this->internal_data[1]); connection.appendDouble(this->internal_data[2]); connection.appendDouble(this->internal_data[3]); // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return !connection.isError(); }
bool Image::write(yarp::os::ConnectionWriter& connection) { ImageNetworkHeader header; header.setFromImage(*this); /* header.listTag = BOTTLE_TAG_LIST; header.listLen = 4; header.paramNameTag = BOTTLE_TAG_VOCAB; header.paramName = VOCAB3('m','a','t'); header.paramIdTag = BOTTLE_TAG_VOCAB; header.id = getPixelCode(); header.paramListTag = BOTTLE_TAG_LIST + BOTTLE_TAG_INT; header.paramListLen = 5; header.depth = getPixelSize(); header.imgSize = getRawImageSize(); header.quantum = getQuantum(); header.width = width(); header.height = height(); header.paramBlobTag = BOTTLE_TAG_BLOB; header.paramBlobLen = getRawImageSize(); */ connection.appendBlock((char*)&header,sizeof(header)); unsigned char *mem = getRawImage(); if (header.width!=0&&header.height!=0) { yAssert(mem!=NULL); // Note use of external block. // Implies care needed about ownership. connection.appendExternalBlock((char *)mem,header.imgSize); } // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return !connection.isError(); }