private static void serializeGenericVehicleMessage(BinaryMessages.VehicleMessage.Builder builder, VehicleMessage message) throws SerializationException { // The binary format doesn't support arbitrary extra fields right now - // could support with protobuf extensions but that is not something I // want to do right now throw new SerializationException( "Can't serialize generic VehicleMessage to binary: " + message); } }
@Override public byte[] serializeForStream(VehicleMessage message) throws SerializationException { ByteArrayOutputStream stream = new ByteArrayOutputStream(); try { MessageLite preSerialized = BinaryFormatter.preSerialize(message); preSerialized.writeDelimitedTo(stream); } catch(IOException e) { throw new SerializationException( "Unable to serialize message to stream", e); } return stream.toByteArray(); }
public static MessageLite preSerialize(VehicleMessage message) throws SerializationException { if(message.hasExtras()) { throw new SerializationException("Messages with extras cannot be " + "serialized to the binary format - use JSON instead"); } BinaryMessages.VehicleMessage.Builder builder = BinaryMessages.VehicleMessage.newBuilder(); if(message instanceof CanMessage) { serializeCanMessage(builder, (CanMessage) message); } else if(message instanceof DiagnosticResponse) { serializeDiagnosticResponse(builder, (DiagnosticResponse) message); } else if(message instanceof Command) { serializeCommand(builder, (Command) message); } else if(message instanceof CommandResponse) { serializeCommandResponse(builder, (CommandResponse) message); } else if(message instanceof EventedSimpleVehicleMessage) { serializeEventedSimpleVehicleMessage(builder, (EventedSimpleVehicleMessage) message); } else if(message instanceof SimpleVehicleMessage) { serializeSimpleVehicleMessage(builder, (SimpleVehicleMessage) message); } else if(message instanceof NamedVehicleMessage) { serializeNamedVehicleMessage(builder, (NamedVehicleMessage) message); } else { serializeGenericVehicleMessage(builder, message); } return builder.build(); }
startSerializingDiagnosticRequest(message)); } else { throw new SerializationException( "Unrecognized command type in response: " + commandType);
messageBuilder.setType(BinaryMessages.ControlCommand.Type.DIAGNOSTIC); } else { throw new SerializationException( "Unrecognized command type in response: " + message.getCommand());