Added support for booleans and more arrays.
This commit is contained in:
		
							parent
							
								
									8e174c0a61
								
							
						
					
					
						commit
						d5507073f8
					
				
							
								
								
									
										2
									
								
								pom.xml
								
								
								
								
							
							
						
						
									
										2
									
								
								pom.xml
								
								
								
								
							| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
 | 
			
		||||
    <groupId>nl.andrewl</groupId>
 | 
			
		||||
    <artifactId>record-net</artifactId>
 | 
			
		||||
    <version>1.2.1</version>
 | 
			
		||||
    <version>1.3.0</version>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <maven.compiler.source>17</maven.compiler.source>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,6 +53,35 @@ public class ExtendedDataInputStream extends DataInputStream {
 | 
			
		|||
		return new UUID(a, b);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public byte[] readByteArray() throws IOException {
 | 
			
		||||
		int length = readInt();
 | 
			
		||||
		if (length < 0) return null;
 | 
			
		||||
		byte[] array = new byte[length];
 | 
			
		||||
		int readLength = read(array);
 | 
			
		||||
		if (readLength != length) throw new IOException("Could not read complete byte array.");
 | 
			
		||||
		return array;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int[] readIntArray() throws IOException {
 | 
			
		||||
		int length = readInt();
 | 
			
		||||
		if (length < 0) return null;
 | 
			
		||||
		int[] array = new int[length];
 | 
			
		||||
		for (int i = 0; i < length; i++) {
 | 
			
		||||
			array[i] = readInt();
 | 
			
		||||
		}
 | 
			
		||||
		return array;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public float[] readFloatArray() throws IOException {
 | 
			
		||||
		int length = readInt();
 | 
			
		||||
		if (length < 0) return null;
 | 
			
		||||
		float[] array = new float[length];
 | 
			
		||||
		for (int i = 0; i < length; i++) {
 | 
			
		||||
			array[i] = readFloat();
 | 
			
		||||
		}
 | 
			
		||||
		return array;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	public <T extends Message> T[] readArray(MessageTypeSerializer<T> type) throws IOException {
 | 
			
		||||
		int length = super.readInt();
 | 
			
		||||
| 
						 | 
				
			
			@ -83,6 +112,8 @@ public class ExtendedDataInputStream extends DataInputStream {
 | 
			
		|||
			return readFloat();
 | 
			
		||||
		} else if (type.equals(Double.class) || type.equals(double.class)) {
 | 
			
		||||
			return readDouble();
 | 
			
		||||
		} else if (type.equals(Boolean.class) || type.equals(boolean.class)) {
 | 
			
		||||
			return readBoolean();
 | 
			
		||||
		} else if (type.equals(String.class)) {
 | 
			
		||||
			return readString();
 | 
			
		||||
		} else if (type.equals(UUID.class)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -90,8 +121,11 @@ public class ExtendedDataInputStream extends DataInputStream {
 | 
			
		|||
		} else if (type.isEnum()) {
 | 
			
		||||
			return readEnum((Class<? extends Enum<?>>) type);
 | 
			
		||||
		} else if (type.isAssignableFrom(byte[].class)) {
 | 
			
		||||
			int length = this.readInt();
 | 
			
		||||
			return readNBytes(length);
 | 
			
		||||
			return readByteArray();
 | 
			
		||||
		} else if (type.isAssignableFrom(int[].class)) {
 | 
			
		||||
			return readIntArray();
 | 
			
		||||
		} else if (type.isAssignableFrom(float[].class)) {
 | 
			
		||||
			return readFloatArray();
 | 
			
		||||
		} else if (type.isArray() && Message.class.isAssignableFrom(type.getComponentType())) {
 | 
			
		||||
			var messageType = RecordMessageTypeSerializer.get(serializer, (Class<? extends Message>) type.getComponentType());
 | 
			
		||||
			return readArray(messageType);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,6 +154,8 @@ public class ExtendedDataOutputStream extends DataOutputStream {
 | 
			
		|||
			writeFloat((float) o);
 | 
			
		||||
		} else if (type.equals(Double.class) || type.equals(double.class)) {
 | 
			
		||||
			writeDouble((double) o);
 | 
			
		||||
		} else if (type.equals(Boolean.class) || type.equals(boolean.class)) {
 | 
			
		||||
			writeBoolean((boolean) o);
 | 
			
		||||
		} else if (type.equals(String.class)) {
 | 
			
		||||
			writeString((String) o);
 | 
			
		||||
		} else if (type.equals(UUID.class)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -162,6 +164,10 @@ public class ExtendedDataOutputStream extends DataOutputStream {
 | 
			
		|||
			writeEnum((Enum<?>) o);
 | 
			
		||||
		} else if (type.equals(byte[].class)) {
 | 
			
		||||
			writeArray((byte[]) o);
 | 
			
		||||
		} else if (type.equals(int[].class)) {
 | 
			
		||||
			writeArray((int[]) o);
 | 
			
		||||
		} else if (type.equals(float[].class)) {
 | 
			
		||||
			writeArray((float[]) o);
 | 
			
		||||
		} else if (type.isArray() && Message.class.isAssignableFrom(type.getComponentType())) {
 | 
			
		||||
			writeArray((Message[]) o);
 | 
			
		||||
		} else if (Message.class.isAssignableFrom(type)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue