private ObjectDef readObjectDef(ByteBuffer buffer) throws IOException{ ObjectDef def = new ObjectDef(); def.objectId = buffer.getShort(); def.objectName = readString(buffer); int numMethods = buffer.get() & 0xff; MethodDef[] methodDefs = new MethodDef[numMethods]; for (int i = 0; i < numMethods; i++){ methodDefs[i] = readMethod(buffer); } def.methodDefs = methodDefs; return def; }
@Override public <T> T readObject(ByteBuffer data, Class<T> c) throws IOException { if (c == RemoteObjectDefMessage.class){ return (T) readObjectDefs(data); }else if (c == RemoteMethodCallMessage.class){ return (T) readMethodCall(data); }else if (c == RemoteMethodReturnMessage.class){ return (T) readMethodReturn(data); } return null; }
private RemoteObjectDefMessage readObjectDefs(ByteBuffer buffer) throws IOException{ RemoteObjectDefMessage defMsg = new RemoteObjectDefMessage(); int numObjs = buffer.get() & 0xff; ObjectDef[] defs = new ObjectDef[numObjs]; for (int i = 0; i < numObjs; i++){ defs[i] = readObjectDef(buffer); } defMsg.objects = defs; return defMsg; }
@Override public void writeObject(ByteBuffer buffer, Object object) throws IOException { // int p = buffer.position(); if (object instanceof RemoteObjectDefMessage){ RemoteObjectDefMessage def = (RemoteObjectDefMessage) object; writeObjectDefs(buffer, def); }else if (object instanceof RemoteMethodCallMessage){ RemoteMethodCallMessage call = (RemoteMethodCallMessage) object; writeMethodCall(buffer, call); }else if (object instanceof RemoteMethodReturnMessage){ RemoteMethodReturnMessage ret = (RemoteMethodReturnMessage) object; writeMethodReturn(buffer, ret); } // p = buffer.position() - p; // System.out.println(object+": uses " + p + " bytes"); }
private void writeObjectDef(ByteBuffer buffer, ObjectDef def) throws IOException{ buffer.putShort((short)def.objectId); writeString(buffer, def.objectName); Method[] methods = def.methods; buffer.put( (byte) methods.length ); for (Method method : methods){ writeMethod(buffer, method); } }
private MethodDef readMethod(ByteBuffer buffer) throws IOException{ String name = readString(buffer); Class<?> retType = readType(buffer); int numParams = buffer.get() & 0xff; Class<?>[] paramTypes = new Class<?>[numParams]; for (int i = 0; i < numParams; i++){ paramTypes[i] = readType(buffer); } MethodDef def = new MethodDef(); def.name = name; def.paramTypes = paramTypes; def.retType = retType; return def; }
@Override public void writeObject(ByteBuffer buffer, Object object) throws IOException { // int p = buffer.position(); if (object instanceof RemoteObjectDefMessage){ RemoteObjectDefMessage def = (RemoteObjectDefMessage) object; writeObjectDefs(buffer, def); }else if (object instanceof RemoteMethodCallMessage){ RemoteMethodCallMessage call = (RemoteMethodCallMessage) object; writeMethodCall(buffer, call); }else if (object instanceof RemoteMethodReturnMessage){ RemoteMethodReturnMessage ret = (RemoteMethodReturnMessage) object; writeMethodReturn(buffer, ret); } // p = buffer.position() - p; // System.out.println(object+": uses " + p + " bytes"); }
private void writeObjectDef(ByteBuffer buffer, ObjectDef def) throws IOException{ buffer.putShort((short)def.objectId); writeString(buffer, def.objectName); Method[] methods = def.methods; buffer.put( (byte) methods.length ); for (Method method : methods){ writeMethod(buffer, method); } }
private MethodDef readMethod(ByteBuffer buffer) throws IOException{ String name = readString(buffer); Class<?> retType = readType(buffer); int numParams = buffer.get() & 0xff; Class<?>[] paramTypes = new Class<?>[numParams]; for (int i = 0; i < numParams; i++){ paramTypes[i] = readType(buffer); } MethodDef def = new MethodDef(); def.name = name; def.paramTypes = paramTypes; def.retType = retType; return def; }
@Override public <T> T readObject(ByteBuffer data, Class<T> c) throws IOException { if (c == RemoteObjectDefMessage.class){ return (T) readObjectDefs(data); }else if (c == RemoteMethodCallMessage.class){ return (T) readMethodCall(data); }else if (c == RemoteMethodReturnMessage.class){ return (T) readMethodReturn(data); } return null; }
@Override public void writeObject(ByteBuffer buffer, Object object) throws IOException { // int p = buffer.position(); if (object instanceof RemoteObjectDefMessage){ RemoteObjectDefMessage def = (RemoteObjectDefMessage) object; writeObjectDefs(buffer, def); }else if (object instanceof RemoteMethodCallMessage){ RemoteMethodCallMessage call = (RemoteMethodCallMessage) object; writeMethodCall(buffer, call); }else if (object instanceof RemoteMethodReturnMessage){ RemoteMethodReturnMessage ret = (RemoteMethodReturnMessage) object; writeMethodReturn(buffer, ret); } // p = buffer.position() - p; // System.out.println(object+": uses " + p + " bytes"); }
private void writeObjectDef(ByteBuffer buffer, ObjectDef def) throws IOException{ buffer.putShort((short)def.objectId); writeString(buffer, def.objectName); Method[] methods = def.methods; buffer.put( (byte) methods.length ); for (Method method : methods){ writeMethod(buffer, method); } }
private ObjectDef readObjectDef(ByteBuffer buffer) throws IOException{ ObjectDef def = new ObjectDef(); def.objectId = buffer.getShort(); def.objectName = readString(buffer); int numMethods = buffer.get() & 0xff; MethodDef[] methodDefs = new MethodDef[numMethods]; for (int i = 0; i < numMethods; i++){ methodDefs[i] = readMethod(buffer); } def.methodDefs = methodDefs; return def; }
private MethodDef readMethod(ByteBuffer buffer) throws IOException{ String name = readString(buffer); Class<?> retType = readType(buffer); int numParams = buffer.get() & 0xff; Class<?>[] paramTypes = new Class<?>[numParams]; for (int i = 0; i < numParams; i++){ paramTypes[i] = readType(buffer); } MethodDef def = new MethodDef(); def.name = name; def.paramTypes = paramTypes; def.retType = retType; return def; }
private RemoteObjectDefMessage readObjectDefs(ByteBuffer buffer) throws IOException{ RemoteObjectDefMessage defMsg = new RemoteObjectDefMessage(); int numObjs = buffer.get() & 0xff; ObjectDef[] defs = new ObjectDef[numObjs]; for (int i = 0; i < numObjs; i++){ defs[i] = readObjectDef(buffer); } defMsg.objects = defs; return defMsg; }
@Override public <T> T readObject(ByteBuffer data, Class<T> c) throws IOException { if (c == RemoteObjectDefMessage.class){ return (T) readObjectDefs(data); }else if (c == RemoteMethodCallMessage.class){ return (T) readMethodCall(data); }else if (c == RemoteMethodReturnMessage.class){ return (T) readMethodReturn(data); } return null; }
private ObjectDef readObjectDef(ByteBuffer buffer) throws IOException{ ObjectDef def = new ObjectDef(); def.objectId = buffer.getShort(); def.objectName = readString(buffer); int numMethods = buffer.get() & 0xff; MethodDef[] methodDefs = new MethodDef[numMethods]; for (int i = 0; i < numMethods; i++){ methodDefs[i] = readMethod(buffer); } def.methodDefs = methodDefs; return def; }
private RemoteObjectDefMessage readObjectDefs(ByteBuffer buffer) throws IOException{ RemoteObjectDefMessage defMsg = new RemoteObjectDefMessage(); int numObjs = buffer.get() & 0xff; ObjectDef[] defs = new ObjectDef[numObjs]; for (int i = 0; i < numObjs; i++){ defs[i] = readObjectDef(buffer); } defMsg.objects = defs; return defMsg; }