import org.tizen.dynamicanalyzer.handlers.ExitHandler;
import org.tizen.dynamicanalyzer.ui.views.CoolbarArea;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
-import org.tizen.dynamicanalyzer.threads.DASingletonCheckThread;
-
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
private static final int DEFAULT_HEIGHT = 768;
private static final int MIN_WIDTH = 800;
private static final int MIN_HEIGHT = 600;
- private static final int DARunningTrue = 1;
private int width = DEFAULT_WIDTH;
private int height = DEFAULT_HEIGHT;
@Override
public void createWindowContents(Shell shell) {
CoolbarArea.createInstance(getWindowConfigurer(), shell);
-
- // Check DA Singleton Dlg.
- DASingletonCheckThread checkFirstPort = new DASingletonCheckThread();
- checkFirstPort.start();
- while (checkFirstPort.bDARunning < 0) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- DASingletonCheckThread checkSecondPort = new DASingletonCheckThread();
- checkSecondPort.start();
- while (checkSecondPort.bDARunning < 0) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- if (checkFirstPort.bDARunning == DARunningTrue && checkSecondPort.bDARunning == DARunningTrue) {
+ if ( DASingletonFocusManager.CheckDASingleton() ) {
System.out.print("Already DA Running \n");
DASingletonFocusManager.SetFocusDA();
System.exit(-1);
DASingletonFocusManager.SetSaveFocusDAPid();
IDEConnectorManager.InitIDESocketThreadListener();
}
-
}
@Override
package org.tizen.dynamicanalyzer;
+import java.io.File;
import java.io.IOException;
+import java.io.RandomAccessFile;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
+
import org.tizen.dynamicanalyzer.constants.AnalyzerConstants;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+
public class DASingletonFocusManager {
private static String pid = null;
private static String Processid = null;
ConfigureManager.getInstance().setValue(
ConfigureManager.SINGLETON_FOCUS_DA_PID, pid);
}
+
+ public static boolean CheckDASingleton(){
+
+ File file = null;
+ FileLock fileLock = null;
+ FileChannel fchannel = null;
+ try {
+ file = new File( AnalyzerConstants.DA_SINGLETON_FILE_PATH );
+ fchannel = new RandomAccessFile(file, "rw").getChannel();
+ fileLock = fchannel.tryLock();
+ if (fileLock == null) {
+ return true;
+ }
+ } catch (Exception e) {
+ return true;
+ }
+
+ return false;
+
+ }
}
public static final String SDB_PATH = PathManager.getSdbPath();\r
public static final String TARGET_PATH = DYNAMIC_ANALYZER_INSTALL_PATH + File.separator\r
+ "target" + File.separator; //$NON-NLS-1$\r
-\r
+ public static final String DA_SINGLETON_FILE_PATH = DYNAMIC_ANALYZER_INSTALL_PATH + File.separator + "fileLock"; //$NON-NLS-1$\r
\r
public static final String InstallPathForLinux = AnalyzerConstants.TIZEN_ROOT_PATH + "/tools/dynamic-analyzer/tool/windowactivator.sh";\r
public static final String InstallPathForWindow = AnalyzerConstants.TIZEN_ROOT_PATH+"/tools/dynamic-analyzer/tool/windowactivator.vbs";\r