import java.rmi.*; /* * Thread class used to populate the first input buffer in the * chain, i.e. Router's input buffer. */ class RemoteChickenInputThread extends Thread { RemoteFilterBuffer buffer; public RemoteChickenInputThread(RemoteFilterBuffer buf) { buffer = buf; } public void run() { try { ChickenPart[] toWrite = ChickenData.data; for (int i = 0; i < toWrite.length; i++) buffer.write(toWrite[i].toString().toCharArray()); buffer.close(); } catch (RemoteException e) { e.printStackTrace(); } catch (BufTooSmallException e) { e.printStackTrace(); } } } /* * Driver for remote Chicken Sorting application. */ public class RemoteChicken { static public void main(String args[]) { try{ System.setProperty("java.security.policy", "java.policy"); if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager()); // Create input and output buffers for Router filter RemoteFilterBuffer rtrInput = (RemoteFilterBuffer) Naming.lookup(args[0]); // Populate Router's input buffer Thread inputThread = new RemoteChickenInputThread(rtrInput); inputThread.start(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } catch (java.net.MalformedURLException e) { e.printStackTrace(); } } }