@Serializable public static class TestMessage extends AbstractMessage { public TestMessage() { setReliable(testReliable); } }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = nextId(); Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); return registerClassForId( classId, cls, serializer ); } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
@Serializable public static class PingMessage extends AbstractMessage { }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = --nextId; Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); idRegistrations.put(classId, reg); classRegistrations.put(cls, reg); serializer.initialize(cls); log.log( Level.INFO, "Registered class[" + classId + "]:{0}.", cls ); return reg; } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
@Serializable public static class TimestampMessage extends AbstractMessage { long timeSent = 0; long timeReceived = 0; public TimestampMessage(){ setReliable(false); } public TimestampMessage(long timeSent, long timeReceived){ setReliable(false); this.timeSent = timeSent; this.timeReceived = timeReceived; } }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = nextId(); Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); return registerClassForId( classId, cls, serializer ); } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }
/** * GZIPCompressedMessage is the class that you need to use should you want to * compress a message using Gzip. * * @author Lars Wesselius */ @Serializable() public class GZIPCompressedMessage extends CompressedMessage { public GZIPCompressedMessage() { super(); } public GZIPCompressedMessage(Message msg) { super(msg); } }
@Serializable public static class PongMessage extends AbstractMessage { }
@Serializable public static class SomeObject { private int val; public SomeObject(){ } public SomeObject(int val){ this.val = val; } public int getVal(){ return val; } @Override public String toString(){ return "SomeObject[val="+val+"]"; } }
/** * Interface implemented by all network messages. * * @version $Revision$ * @author Paul Speed */ @Serializable() public interface Message { /** * Sets this message to 'reliable' or not and returns this * message. */ public Message setReliable(boolean f); /** * Indicates which way an outgoing message should be sent * or which way an incoming message was sent. */ public boolean isReliable(); }
/** * Sent to expose RMI interfaces on the local client to other clients. * @author Kirill Vainer */ @Serializable public class RemoteObjectDefMessage extends AbstractMessage { public ObjectDef[] objects; public RemoteObjectDefMessage(){ super(true); } @Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("RemoteObjectDefMessage[\n"); for (ObjectDef def : objects){ sb.append("\t").append(def).append("\n"); } sb.append("]"); return sb.toString(); } }
/** * CompressedMessage is a base class for all messages that * compress others. * * @author Lars Wesselius */ @Serializable() public class CompressedMessage extends AbstractMessage { private Message message; public CompressedMessage() { } public CompressedMessage(Message msg) { this.message = msg; } public void setMessage(Message message) { this.message = message; } public Message getMessage() { return message; } }
/** * Contains the return value for a remote method invocation, sent as a response * to a {@link RemoteMethodCallMessage} with a non-zero invocationID. * * @author Kirill Vainer. */ @Serializable public class RemoteMethodReturnMessage extends AbstractMessage { public RemoteMethodReturnMessage(){ super(true); } /** * Invocation ID that was set in the {@link RemoteMethodCallMessage}. */ public short invocationID; /** * The return value, could be null. */ public Object retVal; @Override public String toString(){ return "RemoteMethodReturnMessage[ID="+invocationID+", Value="+retVal.toString()+"]"; } }
@Serializable public class ObjectDef {
@Serializable public static class ChatMessage extends AbstractMessage {
@Serializable() public class ZIPCompressedMessage extends CompressedMessage { private static int compressionLevel = 6;
@Serializable() public class ChannelInfoMessage extends AbstractMessage { private long id;