//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~ // SERIALIZATION methods //~~~~~~~~~~~~~~~~~~~~~~ bool dynContact::write(ConnectionWriter& connection) const{ // represent a dynContact as a list of 4 elements that are: // - a list of 3 int, i.e. contactId, bodyPart, linkNumber // - a list of 3 double, i.e. the CoP // - a list of 3 double, i.e. the force // - a list of 3 double, i.e. the moment connection.appendInt(BOTTLE_TAG_LIST); connection.appendInt(4); // list of 3 int, i.e. contactId, bodyPart, linkNumber connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_INT); connection.appendInt(3); connection.appendInt(contactId); connection.appendInt(bodyPart); // left_arm, right_arm, ... connection.appendInt(linkNumber); // list of 3 double, i.e. the CoP connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_DOUBLE); connection.appendInt(3); for(int i=0;i<3;i++) connection.appendDouble(CoP[i]); // list of 3 double, i.e. the force connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_DOUBLE); connection.appendInt(3); for(int i=0;i<3;i++) connection.appendDouble(F[i]); // list of 3 double, i.e. the moment connection.appendInt(BOTTLE_TAG_LIST + BOTTLE_TAG_DOUBLE); connection.appendInt(3); for(int i=0;i<3;i++) connection.appendDouble(Mu[i]); // if someone is foolish enough to connect in text mode, // let them see something readable. connection.convertTextMode(); return !connection.isError(); }
bool Stamp::write(ConnectionWriter& connection) { connection.appendInt(BOTTLE_TAG_LIST); // nested structure connection.appendInt(2); // with two elements connection.appendInt(BOTTLE_TAG_INT); connection.appendInt(sequenceNumber); connection.appendInt(BOTTLE_TAG_DOUBLE); connection.appendDouble(timeStamp); connection.convertTextMode(); return !connection.isError(); }