public static <T extends Streamable> T readGenericStreamable(DataInput in, ClassLoader loader) throws Exception { T retval=null; int b=in.readByte(); if(b == 0) return null; short magic_number=in.readShort(); Class<?> clazz; if(magic_number != -1) { retval=ClassConfigurator.create(magic_number); } else { String classname=in.readUTF(); clazz=ClassConfigurator.get(classname, loader); retval=(T)clazz.newInstance(); } retval.readFrom(in); return retval; }
if(use_magic_number) { short magic_number=in.readShort(); clazz=ClassConfigurator.getInstance(false).get(magic_number); if (clazz==null) { throw new ClassNotFoundException("Class for magic number "+magic_number+" cannot be found."); clazz=ClassConfigurator.getInstance(false).get(classname); if (clazz==null) { throw new ClassNotFoundException(classname);
@SuppressWarnings("unchecked") @Override public void readFrom(DataInput in) throws Exception { try { String classname=in.readUTF(); _classCallable=ClassConfigurator.get(classname); } catch (ClassNotFoundException e) { throw new IOException("failed to read class from classname", e); } _constructorNumber = in.readByte(); short numberOfArgs = in.readByte(); _args = new Object[numberOfArgs]; for (int i = 0; i < numberOfArgs; ++i) { try { _args[i] = Util.readObject(in); } catch (Exception e) { throw new IOException("failed to read arg", e); } } }
private static Address readOtherAddress(DataInputStream in) throws IOException, IllegalAccessException, InstantiationException { ClassConfigurator conf; try { conf=ClassConfigurator.getInstance(false); } catch(ChannelException e) { IllegalAccessException new_ex=new IllegalAccessException(); new_ex.initCause(e); throw new_ex; } int b=in.read(); short magic_number; String classname; Class cl=null; Address addr; if(b == 1) { magic_number=in.readShort(); cl=conf.get(magic_number); } else { classname=in.readUTF(); cl=conf.get(classname); } addr=(Address)cl.newInstance(); addr.readFrom(in); return addr; }
@SuppressWarnings("unchecked") @Override public void readFrom(DataInput in) throws Exception { try { String classname=in.readUTF(); _classCallable=ClassConfigurator.get(classname); } catch (ClassNotFoundException e) { throw new IOException("failed to read class from classname", e); } _constructorNumber = in.readByte(); short numberOfArgs = in.readByte(); _args = new Object[numberOfArgs]; for (int i = 0; i < numberOfArgs; ++i) { try { _args[i] = Util.readObject(in); } catch (Exception e) { throw new IOException("failed to read arg", e); } } }
public static <T extends Streamable> T readGenericStreamable(DataInput in, ClassLoader loader) throws Exception { T retval=null; int b=in.readByte(); if(b == 0) return null; short magic_number=in.readShort(); Class<?> clazz; if(magic_number != -1) { retval=ClassConfigurator.create(magic_number); } else { String classname=in.readUTF(); clazz=ClassConfigurator.get(classname, loader); retval=(T)clazz.newInstance(); } retval.readFrom(in); return retval; }
if (isConnected) return; synchronized (ClassConfigurator.class) { if (ClassConfigurator.get(ClusterMessageHeader.ID) == null) ClassConfigurator.add(ClusterMessageHeader.ID, ClusterMessageHeader.class);
@Override public void connect() { if (isConnected) return; synchronized (ClassConfigurator.class) { if (ClassConfigurator.get(ClusterBufferHeader.ID) == null) ClassConfigurator.add(ClusterBufferHeader.ID, ClusterBufferHeader.class); } try { ((JChannelReceiver) channel.getReceiver()).addReceiver(msg -> { if (msg.getHeader(ClusterBufferHeader.ID) != null) { if (!isLocked) { receiveBuffer.writeBytes(msg.getBuffer()); messageListener.accept(serializer.deserializeCommands(receiveBuffer)); receiveBuffer.clear(); } }}); ((JChannelReceiver) channel.getReceiver()).addViewAcceptor(this::rebuildAddresses); } catch (Exception e) { throw Exceptions.runtime(e); } finally { isConnected = true; } }