/**
   * 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;
  }
  /**
   * Entpackt den R�ckgabewert aus der nachricht und liefert ihn zur�ck.
   *
   * @param m Die Antwortnachricht.
   * @return r Das Ergebnis.
   */
  private Object unmarshals(MessageADT m, UNMARSHAL_TYPE type) {
    if (type == UNMARSHAL_TYPE.METHOD_ONE) {
      byte[] returnval = m.getReturnVal();
      return ByteBuffer.wrap(returnval).getInt();
    } else if (type == UNMARSHAL_TYPE.METHOD_TWO) {
      byte[] returnval = m.getReturnVal();
      return ByteBuffer.wrap(returnval).getDouble();
    }

    return null;
  }