Package ch.ethz.iks.r_osgi.messages

Examples of ch.ethz.iks.r_osgi.messages.RemoteCallMessage


      } else if (args[i] instanceof OutputStream) {
        args[i] = getOutputStreamPlaceholder((OutputStream) args[i]);
      }
    }

    final RemoteCallMessage invokeMsg = new RemoteCallMessage();
    invokeMsg.setServiceID(URI.create(service).getFragment());
    invokeMsg.setMethodSignature(methodSignature);
    invokeMsg.setArgs(args);

    try {
      // send the message and get a MethodResultMessage in return
      final RemoteCallResultMessage resultMsg = (RemoteCallResultMessage) sendAndWait(invokeMsg);
      if (resultMsg.causedException()) {
View Full Code Here


          callback.remoteCallResult(true, res);
        }
      });
    }

    final RemoteCallMessage invokeMsg = new RemoteCallMessage();
    invokeMsg.setServiceID(fragment);
    invokeMsg.setMethodSignature(methodSignature);
    invokeMsg.setArgs(args);
    invokeMsg.setXID(xid.shortValue());

    try {
      send(invokeMsg);
    } catch (final RemoteOSGiException e) {
      callbacks.remove(xid);
View Full Code Here

      }
      }
      return null;
    }
    case RemoteOSGiMessage.REMOTE_CALL: {
      final RemoteCallMessage invMsg = (RemoteCallMessage) msg;
      try {
        RemoteServiceRegistration serv = (RemoteServiceRegistration) localServices
            .get(invMsg.getServiceID());
        if (serv == null) {
          final RemoteServiceRegistration reg = getServiceRegistration(invMsg
              .getServiceID());
          if (reg == null) {
            throw new IllegalStateException(toString()
                + "Could not get " + invMsg.getServiceID() //$NON-NLS-1$
                + ", known services " + localServices); //$NON-NLS-1$
          } else {
            serv = reg;
          }
        }

        // get the invocation arguments and the local method
        final Object[] arguments = invMsg.getArgs();
        for (int i = 0; i < arguments.length; i++) {
          if (arguments[i] instanceof InputStreamHandle) {
            arguments[i] = getInputStreamProxy((InputStreamHandle) arguments[i]);
          } else if (arguments[i] instanceof OutputStreamHandle) {
            arguments[i] = getOutputStreamProxy((OutputStreamHandle) arguments[i]);
          }
        }

        final Method method = serv.getMethod(invMsg
            .getMethodSignature());

        // invoke method
        try {
          Object result = method.invoke(serv.getServiceObject(),
              arguments);
          final RemoteCallResultMessage m = new RemoteCallResultMessage();
          m.setXID(invMsg.getXID());
          if (result instanceof InputStream) {
            m
                .setResult(getInputStreamPlaceholder((InputStream) result));
          } else if (result instanceof OutputStream) {
            m
                .setResult(getOutputStreamPlaceholder((OutputStream) result));
          } else {
            m.setResult(result);
          }
          return m;
        } catch (final InvocationTargetException t) {
          t.printStackTrace();
          throw t.getTargetException();
        }
      } catch (final Throwable t) {
        // TODO: send to log
        t.printStackTrace();
        final RemoteCallResultMessage m = new RemoteCallResultMessage();
        m.setXID(invMsg.getXID());
        m.setException(t);
        return m;
      }
    }
    case RemoteOSGiMessage.REMOTE_EVENT: {
View Full Code Here

TOP

Related Classes of ch.ethz.iks.r_osgi.messages.RemoteCallMessage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.