HI Kryo Users!
I've been using Kryonet for a while with this program that I'm involved with - all is well. But I recently stopped using JavaSerializer to serialize all the classes, and let Kryo take over. Now I'm getting this error:
Exception in thread "Client" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:244)
at com.esotericsoftware.kryonet.TcpConnection.send(TcpConnection.java:188)
at com.esotericsoftware.kryonet.Connection.sendTCP(Connection.java:59)
at com.esotericsoftware.kryonet.Client.keepAlive(Client.java:329)
at com.esotericsoftware.kryonet.Client.update(Client.java:321)
at com.esotericsoftware.kryonet.Client.run(Client.java:338)
at java.lang.Thread.run(Thread.java:745)
Occurs here in the KyroNet source:
/** This method is thread safe. */
public int send (Connection connection, Object object) throws IOException {
SocketChannel socketChannel = this.socketChannel;
if (socketChannel == null) throw new SocketException("Connection is closed.");
synchronized (writeLock) {
// Leave room for length.
int start = writeBuffer.position();
int lengthLength = serialization.getLengthLength();
writeBuffer.position(writeBuffer.position() + lengthLength); <----- HERE
I've listed my register class below, in case that helps. Any help appreciated,
Best,
Paul
/**
* Created by Paul on 23/09/2014. :)
*/
public class RegisterClasses {
public void register (Kryo kryo) {
//java
kryo.register(ArrayList.class);
kryo.register(HashSet.class);
kryo.register(Set.class);
kryo.register(Timestamp.class);
kryo.register(BigDecimal.class);
//enum
kryo.register(EntityStatusType.class);
kryo.register(PrivilegeType.class);
kryo.register(DanPrefix.class);
kryo.register(LogonResponseType.class);
//DTO
kryo.register(CompanyDto.class);
kryo.register(DefermentAccountDto.class);
kryo.register(DivisionDto.class);
kryo.register(PrivilegeDto.class);
kryo.register(RoleDto.class);
kryo.register(UserDto.class);
//client side
kryo.register(ClientLogonNetMsg.class);
kryo.register(ClientRequestAllUsersNetMsg.class);
kryo.register(ClientRequestAllCompaniesAndRolesNetMsg.class);
kryo.register(ClientCreateUserNetMsg.class);
kryo.register(ClientRequestRetireUserNetMsg.class);
kryo.register(ClientRequestOneUserWithAllRolesAndCompaniesNetMsg.class);
kryo.register(ClientRequestAllDefermentAccountNetMsg.class);
kryo.register(ClientDefermentAccountTransactionNetMsg.class);
kryo.register(ClientGenericEntityStatusChangeRequestNetMsg.class);
//server side
kryo.register(ServerLogonResponseNetMsg.class);
kryo.register(ServerUserListResponseNetMsg.class);
kryo.register(ServerAllCompaniesAndRolesResponseNetMsg.class);
kryo.register(ServerCreateUserResultNetMsg.class);
kryo.register(ServerRetireUserResponseNetMsg.class);
kryo.register(ServerUnknownMessageReceivedResponseNetMsg.class);
kryo.register(ServerOneUserAllCompaniesAndRolesResponseNetMsg.class);
kryo.register(ServerDefermentAccountListResponseNetMsg.class);
kryo.register(ServerGenericOperationResultNetMsg.class);
}
}