blob: c1801d92a2f0678ed8192d27e5b1a5d4435325cf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 flash.tools.debugger;
import java.io.IOException;
public interface SessionManager2 extends SessionManager {
/**
* This is, functionally, a clone of the SessionManager.launch() method. There are however some differences.
* -This is to be called only for run launches. only for debug launches, the launch() method creates a Session and
* binds it to the launch and since the launch() method returns the Session, which will be null in a Run Launch case,
* we have no way of accessing the Process that was created for the launch.
* -To enable auto termination of run launches, we need to know the system Process for us to terminate it when
* necessary.
* -This method creates the process and binds a process listener to it and then returns the process.
*
*
* @param uri
* which will launch a Flash player under running OS. For
* Flash/Flex apps, this can point to either a SWF or an HTML
* file. For AIR apps, this must point to the application.xml
* file for the application.
* @param airLaunchInfo
* If trying to launch an AIR application, this argument must be
* specified; it gives more information about how to do the
* launch. If trying to launch a regular web-based Flash or Flex
* application, such as one that will be in a browser or in the
* standalone Flash Player, this argument should be
* <code>null</code>.
* @param waitReporter
* a progress monitor to allow accept() to notify its parent how
* long it has been waiting for the Flash player to connect to
* it. May be <code>null</code> if the caller doesn't need to
* know how long it's been waiting.
* @param launchNotification
* a notifier to notify the caller about ADL Exit Code.
* Main usage is for ADL Exit Code 1 (Successful invocation of an
* already running AIR application. ADL exits immediately).
* May be <code>null</code> if no need to listen ADL.
* The callback will be called on a different thread.
* @return a Process to use for the run launch.
* The return value is not used to indicate an error -- exceptions
* are used for that. If this function returns without throwing an
* exception, then the return value will always be non-null.
* @throws IOException
* see Runtime.exec()
*/
public Process launchForRun(String uri, AIRLaunchInfo airLaunchInfo,
IProgress waitReporter, ILaunchNotification launchNotification) throws IOException;
/**
* This is, functionally, a clone of the SessionManager.launch() method. There are however some differences.
* -This is to be called only for run launches. only for debug launches, the launch() method creates a Session and
* binds it to the launch and since the launch() method returns the Session, which will be null in a Run Launch case,
* we have no way of accessing the Process that was created for the launch.
* -To enable auto termination of run launches, we need to know the system Process for us to terminate it when
* necessary.
* -This method creates the process and binds a process listener to it and then returns the process.
*
* - This method used the ILauncher instance passed to launch the application.
*
* @param uri
* which will launch a Flash player under running OS. For
* Flash/Flex apps, this can point to either a SWF or an HTML
* file. For AIR apps, this must point to the application.xml
* file for the application.
* @param airLaunchInfo
* If trying to launch an AIR application, this argument must be
* specified; it gives more information about how to do the
* launch. If trying to launch a regular web-based Flash or Flex
* application, such as one that will be in a browser or in the
* standalone Flash Player, this argument should be
* <code>null</code>.
* @param waitReporter
* a progress monitor to allow accept() to notify its parent how
* long it has been waiting for the Flash player to connect to
* it. May be <code>null</code> if the caller doesn't need to
* know how long it's been waiting.
* @param launchNotification
* a notifier to notify the caller about ADL Exit Code.
* Main usage is for ADL Exit Code 1 (Successful invocation of an
* already running AIR application. ADL exits immediately).
* May be <code>null</code> if no need to listen ADL.
* The callback will be called on a different thread.
* @param launcher
* a launcher instance which will be used to launch.
* @return a Process to use for the run launch.
* The return value is not used to indicate an error -- exceptions
* are used for that. If this function returns without throwing an
* exception, then the return value will always be non-null.
* @throws IOException
*/
public Process launchForRun(String uri, AIRLaunchInfo airLaunchInfo,
IProgress waitReporter, ILaunchNotification launchNotification, ILauncher launcher) throws IOException;
/**
* Launches the given string as a URI using the ILauncher Instance.
*
* This API is to provide more flexibility to handle the Player launch in different platforms.
*
* This call will block until a session with the newly launched player is
* created.
* <p>
* It is the caller's responsibility to ensure that no other thread is
* blocking in <code>accept()</code>, since that thread will gain control
* of this session.
* <p>
* Before calling <code>launch()</code>, you should first call
* <code>supportsLaunch()</code>. If <code>supportsLaunch()</code>
* returns false, then you will have to tell the user to manually launch the
* Flash player.
* <p>
* Also, before calling <code>launch()</code>, you must call
* <code>startListening()</code>.
*
* @param uri
* which will launch a Flash player under running OS. For
* Flash/Flex apps, this can point to either a SWF or an HTML
* file. For AIR apps, this must point to the application.xml
* file for the application.
* @param airLaunchInfo
* If trying to launch an AIR application, this argument must be
* specified; it gives more information about how to do the
* launch. If trying to launch a regular web-based Flash or Flex
* application, such as one that will be in a browser or in the
* standalone Flash Player, this argument should be
* <code>null</code>.
* @param forDebugging
* if <code>true</code>, then the launch is for the purposes
* of debugging. If <code>false</code>, then the launch is
* simply because the user wants to run the movie but not debug
* it; in that case, the return value of this function will be
* <code>null</code>.
* @param waitReporter
* a progress monitor to allow accept() to notify its parent how
* long it has been waiting for the Flash player to connect to
* it. May be <code>null</code> if the caller doesn't need to
* know how long it's been waiting.
* @param launchNotification
* a notifier to notify the caller about ADL Exit Code.
* Main usage is for ADL Exit Code 1 (Successful invocation of an
* already running AIR application. ADL exits immediately).
* May be <code>null</code> if no need to listen ADL.
* Will only be called if forDebugging is false. (If forDebugging
* is true, error conditions are handled by throwing an exception.)
* The callback will be called on a different thread.
* @return a Session to use for debugging, or null if forDebugging==false.
* The return value is not used to indicate an error -- exceptions
* are used for that. If this function returns without throwing an
* exception, then the return value will always be non-null if
* forDebugging==true, or null if forDebugging==false.
* @throws BindException
* if <code>isListening()</code> == false
* @throws FileNotFoundException
* if file cannot be located
* @throws CommandLineException
* if the program that was launched exited unexpectedly. This
* will be returned, for example, when launching an AIR
* application, if adl exits with an error code.
* CommandLineException includes functions to return any error
* text that may have been sent to stdout/stderr, and the exit
* code of the program.
* @throws IOException
* Exception during launch.
*/
public Session launch(String uri, AIRLaunchInfo airLaunchInfo,
boolean forDebugging, IProgress waitReporter, ILaunchNotification launchNotification, ILauncher launcher) throws IOException;
}