/**
   * 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();
  }