/** * Erzeugt aus param1 ein byte-Array, legt es in einer Liste in die MessageADT zusammen mit der * Internetadresse des CommunicationModule, dem Methodennamen, dem MessageTyp (Request) und der * rawObjRef und sendet die MessageADT �ber das Kommunikationsmodul an den Host auf dem das Objekt * ist, dass diese Methode implementiert. Wartet anschlie�end auf ein Ergebnis und liefert dieses * zur�ck. */ public int methodOne(double param1) throws SomeException110 { // TODO Auto-generated method stub byte[] p1 = new byte[Double.BYTES]; ByteBuffer.wrap(p1).putDouble(param1); ArrayList<byte[]> arguments = new ArrayList<byte[]>(Arrays.asList(p1)); MessageADT m = new MessageADT( CommunicationModule.getLocalHost(), CommunicationModule.getCommunicationmoduleport(), CommunicationModule.messageIDCounter(), "methodOne", REQUEST, rawObjRef, null, arguments, null); MessageADT received = sendRequest(m); Integer result = null; if (received.getReturnVal() != null) { result = (int) unmarshals(received, UNMARSHAL_TYPE.METHOD_ONE); } else { for (Exception e : received.getExceptionList()) { throw (SomeException110) e; } } return result; }
/** * Erzeugt eine MessageADT mit der Internetadresse des CommunicationModule, dem Methodennamen, dem * MessageTyp (Request) und der rawObjRef und sendet die MessageADT �ber das Kommunikationsmodul * an den Host auf dem das Objekt ist, dass diese Methode implementiert. Wartet anschlie�end auf * ein Ergebnis und liefert dieses zur�ck. */ public double methodTwo() throws SomeException112 { MessageADT m = new MessageADT( CommunicationModule.getLocalHost(), -1, CommunicationModule.messageIDCounter(), "methodTwo", REQUEST, rawObjRef, null, null, null); MessageADT received = sendRequest(m); Double result = null; if (received.getReturnVal() != null) { result = (double) unmarshals(received, UNMARSHAL_TYPE.METHOD_TWO); } else { for (Exception e : received.getExceptionList()) { throw (SomeException112) e; } } return result; }
/** * Sendet �ber das Kommunikationsmodul die Request-Nachricht an den Host, auf dem das Objekt ist, * das die Methode implementiert. * * @param m Die zu versendende Nachricht. * @return m2 Die empfangene Nachricht. */ private MessageADT sendRequest(MessageADT m) { CommunicationModuleThread t = CommunicationModule.getNewCommunicationThread(m); synchronized (t) { try { t.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } return t.getReceivedMessage(); }