SquirrelJME/SquirrelJME

View on GitHub
emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/SpringCoatFactory.java

Summary

Maintainability
A
0 mins
Test Coverage
// -*- Mode: Java; indent-tabs-mode: t; tab-width: 4 -*-
// ---------------------------------------------------------------------------
// SquirrelJME
//     Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
// ---------------------------------------------------------------------------
// SquirrelJME is under the Mozilla Public License Version 2.0.
// See license.mkd for licensing and copyright information.
// ---------------------------------------------------------------------------

package cc.squirreljme.vm.springcoat;

import cc.squirreljme.emulator.profiler.ProfilerSnapshot;
import cc.squirreljme.emulator.vm.VMException;
import cc.squirreljme.emulator.vm.VMFactory;
import cc.squirreljme.emulator.vm.VMSuiteManager;
import cc.squirreljme.emulator.vm.VMThreadModel;
import cc.squirreljme.emulator.vm.VirtualMachine;
import cc.squirreljme.jdwp.host.JDWPHostFactory;
import cc.squirreljme.jvm.mle.constants.TaskPipeRedirectType;
import cc.squirreljme.vm.VMClassLibrary;
import java.util.Map;

/**
 * Factory which creates instances of the SpringCoat virtual machine.
 *
 * @since 2018/11/17
 */
public class SpringCoatFactory
    extends VMFactory
{
    /**
     * Initializes the factory.
     *
     * @since 2018/11/17
     */
    public SpringCoatFactory()
    {
        super("springcoat");
    }
    
    /**
     * {@inheritDoc}
     * @since 2018/11/17
     */
    @Override
    protected VirtualMachine createVM(ProfilerSnapshot __profiler,
        JDWPHostFactory __jdwp, VMThreadModel __threadModel,
        VMSuiteManager __suiteManager, VMClassLibrary[] __classpath,
        String __mainClass, Map<String, String> __sysProps, String[] __args)
        throws IllegalArgumentException, NullPointerException, VMException
    {
        // Set up the main task manager which runs everything
        SpringTaskManager tm = new SpringTaskManager(__suiteManager,
            __profiler);
        
        // Bind this to the task manager which is the pure global state
        if (__jdwp != null)
            tm.jdwpController = __jdwp.open(tm); 
        
        // Spawn initial virtual machine task
        return tm.startTask(__classpath, __mainClass, __args, __sysProps,
            TaskPipeRedirectType.TERMINAL, TaskPipeRedirectType.TERMINAL,
            false, true);
    }
}