Android Open Source - anode Runtime






From Project

Back to project page anode.

License

The source code is released under:

Apache License

If you think the Android project anode listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011-2012 Paddy Byers//from w w  w .  j a v a  2 s .  co m
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */

package org.meshpoint.anode;

import java.io.IOException;

import android.content.Context;

/**
 * Public API to obtain and manage Isolate instances of node.js
 * @author paddy
 */
public class Runtime {

  /**************************
   * private state
   **************************/
  
  private static Runtime theRuntime;
  private Context ctx;

  /**************************
   * public API
   **************************/
  
  /**
   * Public factory method to initialise the runtime environment.
   * @param ctx the Context associated with the invoking activity,
   * used to locate the assets
   * @throws InitialisationException if there was a problem initialising the Runtime
   */
  public static synchronized void initRuntime(Context ctx, String[] argv) throws InitialisationException {
    if(theRuntime == null) {
      try {
        theRuntime = new Runtime(ctx, argv);
      } catch (IOException e) {
        throw new InitialisationException(e);      }
    }
  }
  
  public static boolean isInitialised() {
    return theRuntime != null;
  }

  public static Isolate createIsolate() throws IllegalStateException {
    if(theRuntime == null) {
      throw new IllegalStateException("Runtime has not beed initialised");
    }
    return new Isolate(theRuntime.ctx);
  }

  /**
   * States
   */
  public static final int STATE_UNINITIALISED = 0;
  public static final int STATE_CREATED       = 1;
  public static final int STATE_STARTED       = 2;
  public static final int STATE_STOPPING      = 3;
  public static final int STATE_STOPPED       = 4;

  /**
   * Listener interface for being notified of state changes
   */
  public interface StateListener {
    public void stateChanged(int state);
  }
  
  /**
   * Exception class signifying an initialisation problem with the
   * framework, wrapping the underlying exception cause.
   */
  public static class InitialisationException extends Exception {
    private static final long serialVersionUID = 2496406014266651847L;
    InitialisationException(Throwable cause) {super(cause);}
    InitialisationException(String msg) {super(msg);}
  }

  /**
   * Exception class signifying a lifecycle operation failed
   * as a result of the runtime being in an inappropriate state.
   */
  public static class IllegalStateException extends Exception {
    private static final long serialVersionUID = -8553913470826899835L;
    public IllegalStateException(String msg) {super(msg);}
  }

  /**
   * Exception class signifying an error in the node runtime,
   * wrapping the indicated exit code.
   */
  public static class NodeException extends Exception {
    private static final long serialVersionUID = 5950820713527212317L;
    NodeException(int exitval) {super("node exited with error code: " + exitval);}
  }
  
  /**************************
   * private
   **************************/
  
  Runtime(Context ctx, String[] argv) throws IOException {
    this.ctx = ctx;
    RuntimeNative.init(ctx, argv);
  }
  
  public void finalize() {
    RuntimeNative.nodeDispose();
  }
}




Java Source Code List

org.meshpoint.anode.AndroidContext.java
org.meshpoint.anode.AnodeActivity.java
org.meshpoint.anode.AnodeReceiver.java
org.meshpoint.anode.AnodeService.java
org.meshpoint.anode.Constants.java
org.meshpoint.anode.Isolate.java
org.meshpoint.anode.RuntimeNative.java
org.meshpoint.anode.Runtime.java
org.meshpoint.anode.bridge.BridgeNative.java
org.meshpoint.anode.bridge.Env.java
org.meshpoint.anode.bridge.Env.java
org.meshpoint.anode.bridge.FinalizeQueue.java
org.meshpoint.anode.bridge.ModuleClassLoader.java
org.meshpoint.anode.bridge.ModuleContext.java
org.meshpoint.anode.bridge.SynchronousOperation.java
org.meshpoint.anode.error.GeneralError.java
org.meshpoint.anode.error.InternalError.java
org.meshpoint.anode.error.ReferenceError.java
org.meshpoint.anode.error.ScriptError.java
org.meshpoint.anode.error.TypeError.java
org.meshpoint.anode.idl.BoundInterface.java
org.meshpoint.anode.idl.Callback.java
org.meshpoint.anode.idl.Dictionary.java
org.meshpoint.anode.idl.Dictionary.java
org.meshpoint.anode.idl.IDLInterface.java
org.meshpoint.anode.idl.IDLInterface.java
org.meshpoint.anode.idl.InterfaceManager.java
org.meshpoint.anode.idl.InterfaceManager.java
org.meshpoint.anode.idl.StubUtil.java
org.meshpoint.anode.idl.Types.java
org.meshpoint.anode.java.Array.java
org.meshpoint.anode.java.Base.java
org.meshpoint.anode.java.Base.java
org.meshpoint.anode.java.ByteArray.java
org.meshpoint.anode.java.DoubleArray.java
org.meshpoint.anode.java.IntegerArray.java
org.meshpoint.anode.java.LongArray.java
org.meshpoint.anode.java.ObjectArray.java
org.meshpoint.anode.js.JSArray.java
org.meshpoint.anode.js.JSByteArray.java
org.meshpoint.anode.js.JSDoubleArray.java
org.meshpoint.anode.js.JSFunction.java
org.meshpoint.anode.js.JSIntegerArray.java
org.meshpoint.anode.js.JSInterface.java
org.meshpoint.anode.js.JSLongArray.java
org.meshpoint.anode.js.JSObjectArray.java
org.meshpoint.anode.js.JSObject.java
org.meshpoint.anode.js.JSValue.java
org.meshpoint.anode.module.IModuleContext.java
org.meshpoint.anode.module.IModuleContext.java
org.meshpoint.anode.module.IModule.java
org.meshpoint.anode.module.IModule.java
org.meshpoint.anode.stub.DictionaryStubGenerator.java
org.meshpoint.anode.stub.PlatformStubGenerator.java
org.meshpoint.anode.stub.StubGenerator.java
org.meshpoint.anode.stub.UserStubGenerator.java
org.meshpoint.anode.stub.util.DirectoryClassLoader.java
org.meshpoint.anode.stub.util.StubGen.java
org.meshpoint.anode.type.ICollection.java
org.meshpoint.anode.type.IFunction.java
org.meshpoint.anode.type.IIndexedCollection.java
org.meshpoint.anode.util.AndroidLog.java
org.meshpoint.anode.util.ArgProcessor.java
org.meshpoint.anode.util.Log.java
org.meshpoint.anode.util.ModuleUtils.java
org.meshpoint.anode.util.PrintStreamLog.java
org.meshpoint.anode.util.TarExtractor.java
org.meshpoint.anode.util.ZipExtractor.java
org.w3c.dom.Array.java
org.w3c.dom.Array.java
org.w3c.dom.ByteArray.java
org.w3c.dom.ByteArray.java
org.w3c.dom.DoubleArray.java
org.w3c.dom.DoubleArray.java
org.w3c.dom.IntegerArray.java
org.w3c.dom.IntegerArray.java
org.w3c.dom.LongArray.java
org.w3c.dom.LongArray.java
org.w3c.dom.ObjectArray.java
org.w3c.dom.ObjectArray.java
org.w3c.dom.PrimitiveArray.java
org.w3c.dom.PrimitiveArray.java