public void readFrom(DataInput in) throws Exception { type = in.readByte(); boolean isMergeView = in.readBoolean(); if (isMergeView) view = (View) Util.readStreamable(MergeView.class, in); else view = (View) Util.readStreamable(View.class, in); mbr = Util.readAddress(in); mbrs = Util.readAddresses(in, ArrayList.class); join_rsp = (JoinRsp) Util.readStreamable(JoinRsp.class, in); my_digest = (Digest) Util.readStreamable(Digest.class, in); merge_id = (MergeId) Util.readStreamable(MergeId.class, in); merge_rejected = in.readBoolean(); useFlushIfPresent = in.readBoolean(); }
public static void testWriteView() throws Exception { List<Address> members = new ArrayList<>(); View v; Address a1 = Util.createRandomAddress(); Address a2 = Util.createRandomAddress(); Address a4 = Util.createRandomAddress(); ViewId vid = new ViewId(a1, 12345); members.add(a1); members.add(a2); members.add(a4); v = new View(vid, members); ByteArrayOutputStream outstream = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(outstream); Util.writeGenericStreamable(v, dos); Util.writeStreamable(v, dos); dos.close(); byte[] buf = outstream.toByteArray(); ByteArrayInputStream instream = new ByteArrayInputStream(buf); DataInputStream dis = new DataInputStream(instream); View v2 = (View) Util.readGenericStreamable(dis); Assert.assertEquals(v, v2); v2 = (View) Util.readStreamable(View.class, dis); Assert.assertEquals(v, v2); }