public NodeConnectivity(ByteBuf buf) { endpoint = ICorfuPayload.fromBuffer(buf, String.class); type = NodeConnectivityType.valueOf(ICorfuPayload.fromBuffer(buf, String.class)); Map<String, ConnectionStatus> connectivityMap = new HashMap<>(); ICorfuPayload .mapFromBuffer(buf, String.class, String.class) //transform map of strings to map of ConnectionStatus-es .forEach((node, status) -> connectivityMap.put(node, ConnectionStatus.valueOf(status))); connectivity = ImmutableMap.copyOf(connectivityMap); }
@Override public void doSerialize(ByteBuf buf) { ICorfuPayload.serialize(buf, endpoint); ICorfuPayload.serialize(buf, type.name()); Map<String, String> connectivityStrings = new HashMap<>(); connectivity.forEach((node, state) -> connectivityStrings.put(node, state.name())); ICorfuPayload.serialize(buf, connectivityStrings); }